2014-02-03 7 views
-1

Как я могу назвать имя класса из класса расширения без реализации этого метода класса (я хочу расширить эту функцию из родительского класса) и без вызова нового класса. Если я называю имя класса, как это:как имя класса вызова из класса расширенного класса

abstract class foo { 

    public static function get_name(){ 
     return get_class(); 
     //or 
     return __CLASS__; 
    } 
} 

class bar extends foo {} 

echo bar::get_name(); 

я получаю:

foo 

ожидать:

bar 
+0

Для чего это необходимо? – zerkms

ответ

2

Вы можете сделать это с get_called_class, хотя это не понятно, почему вы хотели бы сделайте это методом.

1

Для статических методов вы можете просто использовать get_called_class() вместо get_class().

abstract class foo { 
    public static function get_name(){ 
     return get_called_class(); 
    } 
} 

class bar extends foo {} 
echo bar::get_name(); 
Смежные вопросы