親クラスにオブジェクトを注入し、その後、さまざまなサブクラスに従ってこのオブジェクトのさまざまな実装を注入したいと考えています。
親クラスがこのオブジェクトを使用しているため、サブクラスに挿入できませんが、別の実装が必要です
挿入されたコードを制御します:
オブジェクトは親クラスに挿入されるため、このように書くと機能しません。
親クラスにオブジェクトを注入し、その後、さまざまなサブクラスに基づいてこのオブジェクトのさまざまな実装を注入したいと考えています。
親クラスがこのオブジェクトを使用しているため、サブクラスに挿入できませんが、別の実装が必要です
挿入されたコードを制御します:
オブジェクトは親クラスに挿入されるため、このように書くと機能しません。
方法 1: 親クラスのアクション メソッドにインスタンスを直接挿入しないでください。親クラスは他のメソッドから関連するインスタンスを取得し、サブクラスはこのメソッドをオーバーライドして、自身で挿入されたインスタンスを返します。例:
親クラス:
リーリーサブカテゴリ:
リーリー方法 2: 特性を使用します。
方法 3: __construct に注入します。方法 1 と同様に、親クラスの __construct はパラメータに依存せず、サブクラスの __construct は任意にパラメータに依存します。
なぜこのようなデザインになっているのですか?