9.2. 自作方法

コンポーネントを作成するには、ファイルを 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');