__CLASS__
всегда возвращает имя класса, в котором он использовался, так что это не сильно поможет со статическим методом. Если метод не был статическим, вы можете просто использовать get_class ($ this). например,
class Action {
public function n(){
echo get_class($this);
}
}
class MyAction extends Action {
}
$foo=new MyAction;
$foo->n(); //displays 'MyAction'
Поздние статические привязки, доступны в PHP 5.3 +
Теперь, когда PHP 5.3 выпущен, вы можете использовать поздние статические привязки , которые позволяют разрешать целевой класс для статического вызова метода во время выполнения, а не когда он определен.
Хотя функция не вводит новую магическую константу, которая сообщает вам имя класса, через который вы вызывались, она предоставляет новую функцию get_called_class () , которая может сообщать вам имя класса как статическое метод был вызван. Вот пример:
Class Action {
public static function n() {
return get_called_class();
}
}
class MyAction extends Action {
}
echo MyAction::n(); //displays MyAction