如何获取调用当前函数的该类的对象$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
进一步指导逻辑。
答案 0 :(得分:0)
反射似乎可以用于继承和静态类属性
<?php
class a {
public static function x() {
$callerObj = get_called_class();
return new ReflectionClass($callerObj);
}
}
class b extends a {
public static $y = [0, 1, 2];
public static function z() {
return parent::x()->getProperty('y')->getValue();
}
}
print_r(b::z());
array_push(b::$y, 3);
print_r(b::z());