我有一个扩展的类,它的子进一步扩展了任意的次数。每个扩展提供比其前一个更多的功能。值得注意的是,并非所有参数都可以在初始化时提供。它足够复杂,足以保证通过方法传递更多配置选项,然后调用某种build()或configure()方法来为运行做好准备。在PHP中,如何通过层次结构从最大父项中的方法递归调用一种方法?
问题是,层次结构中的每个类都需要一个配置自身的机会,并且需要从父级级联到所有子级。
我成功做到这一点,但这个解决方案要求每个类都记得调用它的父方法,否则它会中断。我想从那些可能忘记这样做的人那里去除那个责任。
如何修改此代码以实现此目的?
<?php
class A {
function configure() {
print("I am A::configure() and provide basic functionality.<br/>\n");;
}
}
class B extends A {
function configure() {
parent::configure();
print("I am B::configure() and provide additional functionality.<br/>\n");
}
}
class C extends B {
function configure() {
parent::configure();
print("I am C::configure() and provide even more functionality.<br/>\n");
}
}
$c = new C;
$c->configure();
?>
输出:
I am A::configure() and provide basic functionality.
I am B::configure() and provide additional functionality.
I am C::configure() and provide even more functionality.
感谢您的帮助! :)
为什么不使用构造函数?毕竟,这就是他们的目标。 –
@Kerrek SB:+1,但将仍然需要调用链中的手动 – zerkms
使用其中之一涉及配置的显著量,足够努力,以适应在构造函数中的所有参数是不是合理的每一个构造。 – Maarx