Factory コンポーネントは、2つの機能を提供します。
- ライブラリのロード
- ライブラリのロード + インスタンスの生成
Factory コンポーネントを利用すると、
$klass = new Klass;
$result = $klass->execute();
上記を次のように1行で記述することができます。
次のように書いてもOKです。
$result = $klass->execute();
ライブラリをメソッドチェーンに対応するように実装しておけば、以下のように記述できます。
では、詳しい使い方を説明していきます。
まず最初に、Factory::setBaseDir メソッドで、ロードするライブラリを探索するディレクトリを指定します。
※ このメソッドを呼ばない場合、暗黙のうちに Factory.php が置かれているディレクトリが設定されます。
これ以降、ベースディレクトリに「/Lambda/libs」が指定されたものとして説明していきます。
/Lambda/libs/some_class.php をロードして、インスタンスを生成する
/Lambda/libs/hoge/some_class.php をロードして、シングルトンインスタンスを生成する
/Lambda/libs/some_class.php をロードして、クラス名「className」のインスタンスを生成する
※ ファイル名とクラス名が異なる場合、Factory::load() メソッドの第二引数を指定します。
/Lambda/libs/hoge/some_class.php をロードして、コンストラクタ引数を渡してインスタンスを生成する
※ コンストラクタに引数を渡す場合はこのように記述します。
/root/dir/some_class.php をロードして、インスタンスを生成する
※ スラッシュから始まるパスを指定すると setBaseDir() で設定したディレクトリを無視します。
ロードだけ行いたい場合 ( = require)
上は下記と同等です。