我有一個擴展的類,它的子進一步擴展了任意的次數。每個擴展提供比其前一個更多的功能。值得注意的是,並非所有參數都可以在初始化時提供。它足夠複雜,足以保證通過方法傳遞更多配置選項,然後調用某種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