我需要一个继承的静态函数“调用”来调用另一个已被重写的静态函数“内部”。我可以通过后期静态绑定来做到这一点,但我的主机还没有 php5.3,所以我需要解决它。
class ClassA{
static function call()
{
return self::inner();
}
static function inner(){
return "Class A";
}
}
class ClassB extends ClassA{
static function inner(){
return "Class B";
}
}
echo "<p>Class A = " . ClassA::call();
echo "<p>Class B = " . ClassB::call();
我希望输出是:
A级=A级
B 级 = B 级
但它是什么:
A级=A级
B 级 = A 级
我的直觉告诉我,我应该能够在 call() 中编写一些内容来检测调用“call()”时引用的对象。因此,它不是 self::inner() ,而是类似于 calledclass::inner() 的东西。检测要从原始方法调用中调用的 inner() 的正确版本。
如果性能不是问题,您可以使用 debug_backtrace() 来查找被调用的类:
$bt = debug_backtrace();
return get_class($bt[1]['object']);
http://php.net/manual/en/function.debug-backtrace.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)