Получение имени класса из статического вызова в расширенном классе PHP
В мире PHP часто необходимо определить классное имя из статической функции, особенно при работе с расширенными классами. Рассмотрим следующий сценарий:
]class Action {
function n() {/* some implementation */}
}
class MyAction extends Action {/* further implementation */}
в этой ситуации, вызывая myAction :: n (); должен вернуть «myAction» как имя класса. Однако переменная __class__ только возвращает имя родительского класса ("action").
поздние статические привязки (php 5.3):
Php 5.3 введены поздние статические привязки, которые позволяют разрешить целевой класс во время выполнения. Эта функция позволяет определить CLASE CLASS, используя функцию GET_CALLED_CLASS ():
class Action {
public static function n() {
return get_called_class();
}
}
class MyAction extends Action {
}
echo MyAction::n(); // Output: MyAction
] альтернативный подход (Pre-Php 5.3):
до PHP 5.3, альтернативное решение зависит от использования нестатического метода и get_class ():
class Action {
public function n(){
return get_class($this);
}
}
class MyAction extends Action {
}
$foo = new MyAction;
echo $foo->n(); // Output: MyAction
помните, этот подход работает только для нестатических методов, так как функция get_class () принимает экземпляр класса в качестве аргумента.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3