7

自分のコードベース (カスタム PHP ライブラリ) にイベント ディスパッチャを統合する必要があるため、Symfony2Zend Framework 2の両方が何をしているかを調べました。

明らかに、イベントをディスパッチするための共有インターフェースはありません。両方のフレームワークには異なるニーズがあり、独自のコードを実装することにしたためです。

おそらく、オブザーバー パターンを実装するための SPL インターフェイスは少し単純なので、ここで質問します。

編集

明確ではないので... 既存の ED を再利用して、開発者にライブラリに挿入してもらいたいです。

ディスパッチャを使用してライブラリを開発し、そのライブラリが Symfony バンドルの一部になり、ZF プロジェクトでも再利用されることがわかっているとします。自分のディスパッチャではなく、Symfony と ZF のディスパッチャを確実に再利用したいとします。

したがって、主流のライブラリに実装されている既存のディスパッチャー用の共有インターフェイスを探していましたが、解決策がないように思えます。

4

4 に答える 4

4

必要に応じてインターフェイスを定義し、フレームワークごとに異なるアダプターを使用して実装できます。

于 2011-10-10T23:38:44.563 に答える
2

PHP インターフェイス SplObserver 、SplSubject を実装して、オブザーバー パターンを実装する必要があります。Zend だけでなく、Symphony もフックをサポートするためにこれを行っていますが、一般的にすべてのイベント ディスパッチャーは、オブザーバー パターンを実装することでこのように動作します。

詳細については、こちらの記事をご覧くださいhttp://devzone.zend.com/article/4284

于 2011-10-03T01:48:26.787 に答える
2

広く使用されているコンポーネントの 1 つを選択するという最初の直感が正しいと思います。

これら2つは、私も検討するオプションです。両方を見て、自分に最も適していると思われる方を選択するだけです。

恥知らずなプラグイン: 本当に軽量なものが必要な場合は、 Événementをご覧ください。

于 2011-10-02T21:33:50.103 に答える
1

すでに受け入れられている古い投稿ですが、私が持っているようにこれに出くわした人のために、PHP で EDP ソリューションをドロップするための解決策があります。

http://prggmr.org

機能は Symfony や Zend の実装とは大きく異なります。ライブラリを使用するために拡張する必要のあるインターフェイスやクラスがなく、単に典型的な php 関数を呼び出してイベントのディスパッチを処理するためです。

// Subscribe to dispatched events
subscribe(callback, signal)

// Dispatch an event
fire(signal)
于 2012-03-06T19:28:31.240 に答える