假设我有三个课程设置如下:
abstract Class A {
public static function testfunction()
{
print_r('Hi');
}
}
Class B extends A {
}
Class C extends A {
}
如果我通过B类或C类呼叫测试功能,即
B::testfunction();
有没有办法打印出调用它的类的名称?例如,输出可能是
“嗨,这个功能是由B级调用的”
任何建议表示赞赏。
感谢。
答案 0 :(得分:4)
有没有办法打印出调用它的类的名称?
是的,在php 5.3中,但在早期版本中没有。
请参阅:Late Static Binding和get_called_class
通常,您可以通过使用对象实例而不是静态类来避免此问题。这通常是一个更好的解决方案。
答案 1 :(得分:0)
在PHP 5.3中,您可以在静态测试函数中使用get_called_class()。这使用了后期静态绑定。
祝福, 费边