This document is for CakePHP's development version, which can be significantly different
from previous releases.
You may want to read
current stable release documentation instead.
レジストリークラスは、指定されたオブジェクト型のロードされたインスタンスの、 作成および取得する簡単な方法を提供します。 コンポーネント、ヘルパー、タスク、およびビヘイビアーのレジストリークラスがあります。
以下の例ではコンポーネントを使用しますが、コンポーネントに加えて、ヘルパー、ビヘイビアー、 およびタスクに同じ動作を期待することができます。
オブジェクトはその場で add<レジストリーオブジェクト>() でロードすることができます。 例:
$this->loadComponent('Acl.Acl');
$this->addHelper('Flash')
これは、 Acl
プロパティーと Flash
ヘルパーをロードしています。
設定も同様に、その場で行なうことができます。例:
$this->loadComponent('Cookie', ['name' => 'sweet']);
提供される任意のキーと値は、コンポーネントのコンストラクターに渡されます。このルールの唯一の例外は、
className
です。クラス名は、レジストリーのエイリアスオブジェクトに使用される特殊なキーです。
これは、クラス名を反映していないコンポーネント名を持つことができ、コアコンポーネントを拡張する際に
役立ちます。
$this->Auth = $this->loadComponent('Auth', ['className' => 'MyCustomAuth']);
$this->Auth->user(); // 実態は MyCustomAuth::user();
コールバックは、レジストリーオブジェクトによって提供されていません。 アプリケーションのすべてのイベント/コールバックをディスパッチするために events system を使用する必要があります。
以前のバージョンでは、コレクションオブジェクトは、コールバックを受けるオブジェクトを無効にする
disable()
メソッドを提供していました。
現在、これを実現するためには、イベントシステムの機能を使用する必要があります。
たとえば、次のようにコンポーネントのコールバックを無効にすることができます。
// Auth コールバックを無効化
$this->getEventManager()->off($this->Auth);
// Auth コールバックを再度有効化
$this->getEventManager()->on($this->Auth);