2012-03-21 4 views
2

私は次のシステムを実装するアプリケーションを用意しています。コードの特定の主要場所では、アプリケーションイベントを「起動」するために使用するOOPパターン

$event_handler->trigger('on_after_init'); 

のような行があります。この行は、初期化が完了したことを通知します。次に、このイベントや他のイベントをリッスンして任意のコードを実行するランダムな拡張機能やプラグインが必要です。たとえば、実行するクラスを置くことができる、plugins/after_init/...のようなものです。または、DBに保管しておき、必要に応じて注文を調整することもできます。

私はこのようなものを作ることができますが、これは古典的な仕事であり、そのための標準的なパターンがあると感じています。私は自転車を発明したくないので、本当にそうなら、関連情報を教えてください。

ありがとうございます!

+2

私は[この回答](http://stackoverflow.com/questions/9776364/whats-the-properway-to-use-symfonys-eventdispatcher-component/)に記載されている理由でObserverパターンを避けるでしょう。 9790350#9790350)。メディエータのパターンや責任の連鎖は、この種のものの方が一般にはるかに優れています。 – rdlowrey

+2

また、@ circmaxellは最近[トピック全体を調査しているブログ](http://blog.ircmaxell.com/2012/03/handling -plugins-in-php.html)、あなたが明確化が必要な場合、彼はPHPのチャットルームで空いています。さらに、自己宣伝の危険性がある場合、ここには[メディエーターパターンのオブジェクト指向の実装](https://github.com/rdlowrey/Artax/blob/master/Core/src/Artax/Events/Mediator.php)があります。あなたが具体的な例を見ることに興味があるならば、私は最近一緒にまとめました。 – rdlowrey

答えて

0

prggmrは、アプリケーション内のイベントをトリガするためのイベントライブラリを提供します。つまり、アプリケーション内の信号を「購読」して「起動」することができます。

subscribe(function($event){ 
    echo "Do something here" 
}, 'on_after_init'); 

fire("on_after_init"); 

それははるかにOOPデザインパターンの少なくとEvent Driven Programmingのプログラミングパラダイムの多いが、これは緩く、Observer patternとして定義することができます。

1

Symfonyにはstand-alone componentsという番号があり、そのうちの1つがEventDispatcherのコンポーネントです。あなたのニーズに合わせて見てください。

関連する問題