2017-05-11 14 views
-2

私はクラス車のためのオブジェクトを作成していないので、なぜクラスカーのコンストラクトが呼び出されていますか?PHPのコンストラクトコンセプトが不明確

<?php 


class Cars{ 

function __construct(){ 

echo "i am cars"; 

} 

} 


class SmallCars extends Cars{ 


} 

$car = new SmallCars(); 

?> 
+3

で以前にカバーされている

、あなたのSmallCarsは、すべての車がOOの定義そのものです – HReynaud

+0

を機能得ます。オーバーライドしないと、スーパークラスがあなたを助けます。 – anwerj

答えて

3

あなたがクラスを拡張するときは、明示的にドキュメントから

にそれをないよう指示しない限り、子供は親のコンストラクタを継承します:

注:場合は、親のコンストラクタが暗黙的に呼び出されていませんが子クラスはコンストラクタを定義します。親コンストラクタを実行するには、子コンストラクタ内でparent :: __ construct()を呼び出す必要があります。子がコンストラクタを定義していない場合は、通常のクラスメソッドのように親クラスから継承することができます(プライベートとして宣言されていない場合)。

また、HReynaudはコメントセクションでこれを指摘しています。この質問は、そのためのオブジェクトプログラミングにおける継承のhere

PHPの__construct()のドキュメントhere