2016-04-13 11 views
0

私はクラスAを持っており、クラスはA(例えば、AA,,AC,AD)からです。これらの "サブクラス"はすべてAの__contructメソッドから呼び出されます。`parent :: _ construct()`を実行する必要がありますか?

例えば、PhpStormでは、 AA__construct:「親コンストラクタ呼び出しが見つかりません」という警告が表示されます。 parent:__contructを追加すると、クラスが初期化され続けるループが発生することは明らかです。

私はこの警告を無視して安全にすることができますか?

+3

クラスは論理ループを作成するだけでなく、クラスを拡張するクラスについて積極的に知ってはいけません。構造全体を再考してください。 – deceze

+0

これは工場パターンに適していませんか? – Palantir

+0

@deceze私はあなたが正しいと思う:-)それは私に少し曲がっているように感じるが、一方でもう少し一緒にコードを保つ。 – Richard

答えて

5

私は、親クラスのコンストラクタからサブクラスをインスタンス化すべきではないと言っています。

は、私はより多くのような何かを示唆している:new Aを含めると、そのインスタンスへnew AAを取り付けることができます

class A { 
    public static function generate() { 
     // current "constructor" code here 
    } 
} 

を、これは「ループ」を回避します。

+0

それは私にもとてもいい気分にはなりませんでした。そして、 '$ A = new \ NS \ A'の後に、' $ A-> generate() 'を実行してください。 – Richard

+0

'\ NS \ A :: generate()'は静的メソッドであるためです。 –

+0

ええと、そうです、それは私が意味していた;-) – Richard

関連する問題