コンポーネントを作成するには、ファイルを app/controllers/components/
ディレクトリに追加してください。
仮に、 foo.php を作ったとすると、ファイルの中には、 ファイル名に対応するクラスを定義する必要があります。(ファイル名に、'Component'
を付け加える。) この場合は:
例 9.1. シンプルなコンポーネント
class FooComponent extends Object
{
var $someVar = null;
var $controller = true;
function startup(&$controller)
{
// このメソッドは、このコンポーネントを読み込んだコントローラへの参照を持つ。
// コントローラの初期化をここで行う。
}
function doFoo()
{
$this->someVar = 'foo';
}
}
コンポーネントを使うには、コントローラの定義の中に下記のコードを追加する必要があります:
var $components = array('Foo');
コントローラ内では下記のように使用できます:
$this->Foo->doFoo();
コンポーネントは、コンポーネントを読み込んだコントローラへ startup() メソッドでアクセスできます。 このメソッドは、Controller::beforeFilter() の直後に呼ばれます。 これにより、beforeFilter メソッドでコンポーネントのプロパティを設定できるようになっています。 コンポーネントは、startup() メソッドに基づいて動作します。
コンポーネントの内部でモデルを利用するには、下記のように新しいインスタンスを作成できます:
$foo =& new Foo();
コンポーネントの中で、他のコンポーネントを利用することも可能です。 使用したいコンポーネントを定義するだけです。 下記の例では、セッションコンポーネントを定義しています。
var $components = array('Session');