CakePHP
cakephp2

【サルが書く】cakephpのClassRegistry::initってなんだ

コンポーネントやヘルパーからモデルを呼びたい時はClassRegistry::initじゃないとモデルを呼べない。
App:usesとApp::importはコンポーネントやヘルパーでは使えないらしい。
またユニットテストを行いたいときにはClassRegistry::initを使うと、本番DBに繋がずにテストを行いことができるらしい。

ClassRegistryはインスタンスが生成済みであれば、生成済みのインスタンスを返す。シングルトン形式でインスタンスを生成している。なので違う性質のインスタンスをいくつか作る場合は適していないらしい。

  • シングルトンとは生成するインスタンスを一つに制限するデザインパターンらしい。
  • シングルトンだと指定したクラスのインスタンスが一つだと保証する。
  • インスタンスが一つだと表現したい
  • このような場合にSingletonパターンを用いてインスタンスを生成します。

インスタンスの状態を保持したかったり、クラス間で共通のメソッド・プロパティにアクセスしたい場合に使われることが多いですね。