PHP - 从扩展类调用静态函数

时间:2009-12-03 11:23:50

标签: php function static

假设我有三个课程设置如下:

abstract Class A {

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

}

Class B extends A {

}

Class C extends A {

}

如果我通过B类或C类呼叫测试功能,即

B::testfunction();

有没有办法打印出调用它的类的名称?例如,输出可能是

“嗨,这个功能是由B级调用的”

任何建议表示赞赏。

感谢。

2 个答案:

答案 0 :(得分:4)

  

有没有办法打印出调用它的类的名称?

是的,在php 5.3中,但在早期版本中没有。

请参阅:Late Static Bindingget_called_class

通常,您可以通过使用对象实例而不是静态类来避免此问题。这通常是一个更好的解决方案。

答案 1 :(得分:0)

在PHP 5.3中,您可以在静态测试函数中使用get_called_class()。这使用了后期静态绑定。

祝福, 费边