爲什麼我不能使用這樣的代碼?爲什麼PHP沒有默認構造函數?
<?php
class NoConstructor {
}
class ChildWithConstructor extends NoConstructor {
public function __construct() {
parent::__construct();
// do something
}
}
$foo = new ChildWithConstructor();
// **Fatal error: Cannot call constructor in file.php on line 8**
例如, Java類有默認的,沒有參數構造函數。即使未明確定義,也可以調用它。
當我們從父類中移除任何參數構造函數時,PHP行爲會導致麻煩,例如。當我們認爲它不再需要時。
有誰知道爲什麼PHP創造者這樣做?
除了你的問題,應該提到你可以解決這個問題:在調用之前檢查函數的存在。 –
PHP創建者做出了很多愚蠢的決定...... –
http://www.php.net/manual/en/function.is-callable.php:if(is_callable('parent :: __ construct')){父:: __構建體(); } –