2012-03-06 19 views
6

Sto provando a farlo senza richiedere una funzione sulla classe figlio ... è possibile? Ho la sensazione che non lo è, ma voglio davvero essere sicuri ...Come ottenere il nome classe figlio dalla classe genitore

<?php 
class A { 
    public static function who() { 
     echo __CLASS__; 
    } 
    public static function test() { 
     static::who(); // Here comes Late Static Bindings 
    } 
} 

class B extends A { 
    public static function who() { 
     echo __CLASS__; 
    } 
} 

B::test(); //returns B 
?> 

risposta

13

Uso get_called_class() invece di __CLASS__. Potrai anche essere in grado di sostituire static con self come la funzione risolverà la classe fino alla fine di vincolante per voi:

class A { 
    public static function who() { 
     echo get_called_class(); 
    } 
    public static function test() { 
     self::who(); 
    } 
} 

class B extends A {} 

B::test(); 
Problemi correlati