PHP - вызов статической функции из расширенного класса - PullRequest
0 голосов
/ 03 декабря 2009

Допустим, у меня есть три класса, настроенные следующим образом:

abstract Class A {

public static function testfunction() 
{
   print_r('Hi');
}

}

Class B extends A {

}

Class C extends A {

}

Если я вызываю testfunction через класс B или C, т.е.

B::testfunction();

Есть ли способ распечатать название класса, который его назвал? Так, например, вывод может быть

«Привет, эта функция была вызвана классом B»

Любой совет приветствуется.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 03 декабря 2009

Есть ли способ распечатать имя класса, который его вызвал?

Да, в php 5.3, но не в более ранних версиях.

См .: Позднее статическое связывание и get_called_class

В общем, вы можете избежать этой проблемы, используя экземпляры объектов, а не статические классы. Часто это лучшее решение.

0 голосов
/ 03 декабря 2009

В PHP 5.3 вы можете использовать get_called_class () в вашей функции статического теста. При этом используется поздняя статическая привязка.

С наилучшими пожеланиями, Fabian

...