我不知道这是否可行,所以我会尽力解释.
我希望有一个可以通过“插入”子类轻松扩展的父类,该子类可能存在也可能不存在.
class Foo {
__construct(){
$this->foo = "this is foo";
}
}
class Bar extends Foo {
function construct(){
parent :: __construct;
}
$this->foo = "foo is now bar";
}
但我不想每次需要时都用$bar = new Bar初始化Bar类,Boo类来自Foo,我不知道有哪些子类可用..理想情况下,我希望它缩放,所以没关系.我希望子类在有新Foo调用时自动进行初始化.
这有可能吗?有没有更好的方法可以解决这个问题,以便我可以使用子类在父类的每个实例中修改变量?我在WordPress中工作,所以我想我可以给Foo类一个动作挂钩,任何子类都可以插入其中,但是我想知道是否有一种自然的PHP方法可以实现这一点.
解决方法:
我认为,根据您提供的信息,如果您真的无法以任何方式编辑Foo的实现,那么您就很不走运了.
继承对您不起作用,因为这将要求Bar成为实例化的类,而不是Foo.当其他代码将创建Foo类型的新对象时,您不能使用Bar默默地使用Foos功能.
鉴于您提到的是与Wordpress有关的,您总是可以要求插件开发人员在其init进程中添加钩子,以允许您扩展功能.基本上,这就是Wordpress允许第三方代码扩展其代码的方式.