ファクトリ パターンを参照してください。
class Foo {
static function factory($class, array $args = null) {
return new $class($args);
}
}
// class factoring; returns a new instance of requested class ($className)
Foo::factory($className);
一部のクラス プロパティを設定する場合は、オプションの引数配列を追加しました。
// pass some values for class constructor
Foo::factory($className, array('arg1' => 1, 'arg2' => 2, 'args3' => 3));
さらに、そのパターンを使用するときにメソッドを「連鎖」できるように、「流動的な」インターフェースを構築できます。
Foo::factory($className)->method1()->method2(array('param' => 'value'))->etc();
where method1()
, method2()
must return $this
(オブジェクト自体) は、複数のメソッド呼び出しを 1 行で連鎖させる必要があります。