【发布时间】:2020-05-31 06:27:57
【问题描述】:
我正在使用 Wordpress,需要实例化一个类似于这个过于简化的示例的新类(对于接收一些参数的 add_action() 挂钩):
class A {
public function __construct() {
}
public static function init() {
$instance = new self();
$instance->doStuff();
}
protected function doStuff() {
echo get_class($this);
}
}
class B extends A {
}
B::init(); //returns 'A'
如何在init() 中获取self 以在从它们调用时引用扩展类?我知道 PHP 文档中的 late static bindings page,但我不清楚如何在上述上下文中应用它。谢谢!
【问题讨论】:
-
因为 B 继承了 A 而你还没有在 B 类中实现函数
init,所以它正在寻找父类的实现。 -
我曾考虑过,但不是很干。那么,最好的方法是通过重写 B 类中的整个 init() 函数来覆盖 A::init() 吗?
-
-
@HorusKol 我错了,你给出了很好的解决方案。
标签: php factory dry self late-static-binding