1

モデルの PHP ファイル内でモデル クラスを CakeEventListener として登録することをお勧めします。

たとえば、リスナーを実装する Document というモデルを作成し、Document.php の下部でそれをリスナーとして登録するとします。

class Document extends AppModel implements CakeEventListener
{
   .....
}

CakeEventManager::instance()->attach(ClassRegistery::init('Document'));

私の質問は、 andClassRegistery::init('Document')の nexted 呼び出しについてです。上記により の 2 つのインスタンスDocumentが作成されるかどうかです。

たとえば、コントローラーに次のものがあるとします。

class DocumentsController extends AppController
{
     public function index()
     {
         $model = ClassRegistery::init('Document');
         .....

インスタンス化された回数はDocument?

  • コントローラーからの最初の呼び出しでClassRegistery::init('Document')、Document.php ファイルがロードされます。
  • 最初の呼び出しが終了したClassRegistery::init('Document')Document.php の下部からの2 番目の呼び出しはありませんか?befoe

これはどうにかして CakePHP のレジストリをばらばらにするのでしょうか?

4

1 に答える 1

2

それは問題ではないはずです。ClassRegistry::init()オブジェクトをインスタンス化するのは1回だけです。init()既存のオブジェクトを返すための後続の呼び出し。

ただし、Documentの__construct関数にリスナーを登録することをお勧めします。自己実行PHPをクラスファイルと混合していないため、これはよりクリーンに感じられます。また、後でユニットテストに役立つ可能性のある注入も可能になります。

于 2013-02-15T18:02:02.240 に答える