«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как получить имя класса из статического вызова метода в расширенных классах PHP?

Как получить имя класса из статического вызова метода в расширенных классах PHP?

Опубликовано в 2025-03-22
Просматривать:386

How to retrieve the class name from a static method call in extended PHP classes?

Получение имени класса из статического вызова в расширенном классе 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