我有一個(抽象)父類應該提供建設期間的功能。子類可以覆蓋在構造中使用的屬性:PHP繼承︰子類重寫父變量/屬性在構造函數中使用
class Parent extends MiddlewareTest
{
// abstract channel properties
protected $title = NULL;
protected $type = NULL;
protected $resolution = NULL;
function __construct() {
parent::__construct();
$this->uuid = $this->createChannel($this->title, $this->type, $this->resolution);
}
}
class Child extends Parent
{
// channel properties
protected $title = 'Power';
protected $type = 'power';
protected $resolution = 1000;
}
問題是,當其被不重寫運行Child::__construct()
($this->createChannel
被調用NULL
參數)不使用覆蓋的性質。
這是可能的PHP中,或者我將不得不訴諸覆蓋子構造函數每次提供所需的功能?
注:我看到Properties shared between child and parents class in php但這是不同的,因爲子屬性沒有在構造函數中分配,而是根據定義。
更新
事實證明我的測試情況下是錯誤的。由於MiddlewareTest基於SimpleTest單元測試用例,因此SimpleTest實際上 - 我沒有意識到 - 通過自動運行實例化了從未滿足的Parent類本身。通過使父類抽象來修復。
經驗教訓:建立一個乾淨的測試用例,並在哭求求救之前實際運行它。
對不起,沒有提供一個工作的例子。你的提示讓我開始建立一個,我可以看到你的觀點。試圖找到現在的差異。 – andig