Константа, содержащая $ this class name

Есть ли константа в PHP, содержащая имя текущего подкласс? Чтобы я мог написать такую функцию, как:

namespace test\that;
class MyClass extends ClassA {
}
abstract class ClassA { public static function getClassName() { return __THIS_CLASS__; // like get_class($this); in a none static method }
}

В конце концов я бы сделал что-то вроде этого:

namespace test\other;
use test\that\MyClass;
var_dump(MyClass::getClassName()); // --> test\that\MyClass

Возможно ли это?

3 ответа

Вероятно, вы смотрите на get_called_class(); он возвращает имя класса, в который вызывается статический метод.

public static function getClassName() { return get_called_class();
}
MyClass::getClassName(); // "MyClass"


Как насчет __CLASS__?

Посмотрите на константы: http://www.php.net/manual/en/language.constants.predefined.php


Вы можете использовать метод PHP get_called_class(). Чтобы вернуть имена родительского класса и дочернего класса.

get_called_class()

licensed under cc by-sa 3.0 with attribution.