Как получить имя класса из статического метода? Есть код аналогичный этому:class A extends B {} abstract class B { static function show(){ //здесь хочу получить имя класса, от которого был вызван метод } } class D{ public function init() { A::show(); } } $object = new D(); D->init(); Проблема: нужно получить внутри функции show() имя класса, из которого он непосредственно был вызван. Пока все мои поиски и попытки увенчались либо получением класса, в котором эта функция определена (B) или класса, в котором произошёл вызов (D). Я знаю вариант, при котором решается задача, но для него мне нужно прописывать имя класса как свойство этого класса, чего категорические делать не хочется. Кто знает решение этой делемы?
Для того чтобы получить имя класса из статического метода, можно воспользоваться встроенной функцией PHP get_called_class(). Вот как можно модифицировать ваш код, чтобы получить имя класса, от которого был вызван статический метод:
abstract class B { static function show(){ $className = get_called_class(); echo $className; } } class A extends B {} class D { public function init() { A::show(); } } $object = new D(); $object->init();
При вызове метода show() из класса A, вы получите имя класса A.
Для того чтобы получить имя класса из статического метода, можно воспользоваться встроенной функцией PHP get_called_class(). Вот как можно модифицировать ваш код, чтобы получить имя класса, от которого был вызван статический метод:
abstract class B {static function show(){
$className = get_called_class();
echo $className;
}
}
class A extends B {}
class D {
public function init() {
A::show();
}
}
$object = new D();
$object->init();
При вызове метода show() из класса A, вы получите имя класса A.