Возможно ли получить имя текущего класса из неэкспонированного объекта в PHP? - PullRequest
5 голосов
/ 25 января 2009

Я знаю, что вы можете использовать get_class ($ this) как обычно, но мне нужно получить имя класса в статической функции, в которой объект не был создан.

См. Следующий код:

class ExampleClass
{
    static function getClassName()
    {
        echo get_class($this); // doesn't work unless the object is instantiated.
    }
}

$test1 = new ExampleClass();
$test1->getClassName(); // works

ExampleClass::getClassName(); // doesn't work

Ответы [ 3 ]

8 голосов
/ 25 января 2009

Я думаю, что вы ищете функцию get_called_class (), если хотите получить имя класса из статического метода.

См. get_called_class документация для получения дополнительной информации.

3 голосов
/ 25 января 2009

Я понял, что вы можете использовать __CLASS__, чтобы получить имя класса. Пример:

class ExampleClass
{
    static function getClassName()
    {
        echo __CLASS__;
    }
}
0 голосов
/ 26 января 2009

Мой вопрос: как вам удается вызывать статическую функцию, не зная имени класса?

Я могу придумать только два способа:

ExampleClass::getClassName(); //Hard Coded - the class name is hard and visible
$class = "ExampleClass";
$class::getClassName();       //Soft Coded - the class name is the value of $class

Возможно, можно было бы предложить лучшее решение, если бы мы знали контекст, в котором вы пытаетесь сделать звонок?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...