から子クラスをインスタンス化:私はそれで工場出荷時のパターンの機能を持つクラスを持つ親クラス(PHP)
abstract class ParentObj {
public function __construct(){ ... }
public static function factory(){
//returns new instance
}
}
私は子供たちが工場出荷時の関数を呼び出すと、呼び出し元のインスタンスを返すことができるようにする必要がありますクラス:$child = Child::factory();
であり、好ましくは子クラスのファクトリ関数をオーバーライドしないでください。
私はこれを無駄にするための複数の異なる方法を試しました。 __CLASS__
のように、反射を使用するソリューションから離れることを好むでしょう。
(それが重要ならば、私はPHP 5.2.5を使用しています)
... –
LSBようです私が自分で見つけることができる最高のソリューションになるようにしてください。 私がアップグレードするまでは、子の名前をfactory()に渡すか、名前をプロパティとして定義してfactory()から取得してください。 –
PHPマニュアルによれば、 get_called_class() 'は' __CLASS__'のように動作しますhttp://us.php.net/manual/en/function.get-called-class.php –