【发布时间】:2018-06-23 21:56:05
【问题描述】:
如何获取调用当前函数的那个类的对象$this?
class a extends zebra {
function xyz() {
...
b::somestaticmethod();
}
}
class b {
public static function somestaticmethod() {
$callerObj = get_called_class();
}
}
函数get_called_class() 以字符串格式获取调用类的名称。我正在寻找的是,有没有一种方法可以从调用类的上下文中获取对象 ($this),就像将 $this 作为以下参数传递时会发生的情况一样。
b::somestaticmethod($this);
为什么?
我计划在somestaticmethod() 方法上实现多态行为,它将检查调用类并基于该类的ancestor 进一步指导逻辑。
【问题讨论】:
-
澄清一下,您不仅想要类名,还想要被调用类的实际对象?
-
是的,这正是我正在寻找的。 ....具有所有继承和一切的整个对象,实际上没有将它作为参数传递。
-
我不确定这样的事情是否存在,你为什么不把
$this作为参数传递呢? -
是的,我目前已经按照您的建议实现了它,但是后来我正在寻找一种方法来独立获取对象而无需传递对象,而(手动传递对象)不需要给我一个具体的保证,就是
$this被传递了,而不是其他一些对象。就像你可以从调用类传递类名时为什么使用get_called_class()的类比:) 希望你明白我的意思。 -
这是我唯一能找到的其他东西:stackoverflow.com/questions/1093101/… - 他们似乎都在传递参数,我一眼就能看出。
标签: php polymorphism