なぜこのようなコードを使用できないのですか?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クラスには、デフォルトでargsコンストラクタはありません。明示的に定義されていなくても呼び出すことができます。
PHPの動作は、親クラスからargsコンストラクタを削除しないと問題を引き起こす可能性があります。私たちはそれがもう必要ではないと思うとき。
PHPクリエイターがこのようにした理由を知っている人はいますか?
あなたの質問に加えて、これを回避することができることに言及する必要があります:コールする前に関数の存在を確認してください。 –
PHPクリエイターは、愚かな意思決定の*ロット*を作った... –
http://www.php.net/manual/en/function.is-callable.php:if(is_callable( 'parent :: __ construct')){ parent :: __ construct(); } –