このシナリオを参照してください:
class Parent {
protected $property1; // Not set
protected $property2 = '2'; // Set to 2
public function __construct(){
$this->property1 = '1'; // Set to 1
}
} // class Parent;
class Child extends Parent {
public function __construct(){
// Child CHOOSES to call parent constructor
parent::__construct(); // optional call (what if skipped)
// but if he does not, ->property1 remains unset!
}
} // class Child;
これが 2 つの呼び出しの違いです。親から継承する子クラスでは、parent::__construct() はオプションです。そう:
- 事前設定が必要なスカラー (のように) プロパティがある場合は、それらが子クラスにも存在することを確認するために、クラス定義で
is_scalar()
それを行います。
- 引数に依存するプロパティまたはオプションのプロパティの場合は、それらをコンストラクタに入れます。
それはすべて、コードの機能をどのように設計するかによって異なります。
ここに間違った権利はありません。それはあなたにとって正しいことだけです。