社長BLOG
【OP3TIPS】イベントフックの方法
- 2010-06-23 (水)
- 社長BLOG
※自分の技術メモとして
OpenPNE3では、取り付けるプラグイン側からOpenPNE本体の挙動を変えることができるようになる。
その中でも便利だと思うのがイベントフック。
たとえば、
・日記が書かれたらメールで通知したい
・メンバーが参加したら紹介文を書きたい
・退会したら連動して外部のデータも削除したい
こんな拡張をしたいとする。
Ver3からは、プラグインを追加することでこうしたイベントが発生する前後にフックをかけ、機能を付け足すことができるようになる。
それもOpenPNE3本体のソースコードをいじらずに。
本体のソースをいじらないということは、OpenPNEのバージョンアップに追従するカスタマイズが可能ということ。
さて、イベントフックの方法だが、これがかなり簡単。
以下のサンプルでイメージがつかめるのではないか?
$this->dispatcher->connect(‘op_action.post_execute_communityTopicComment_create’,’func_a’);
// communityTopicComment モジュールの create アクション のpost_execute (実行後フック)
function func_a(sfEvent $event){
$request = $event[‘actionInstance’]->getRequest();
$p = $request->getParameter(‘xxxx’);
}
OpenPNE3のこの部分を見れば、イベント名がどのように命名されているかがわかる。
http://github.com/openpne/OpenPNE3/blob/master/lib/filter/opExecutionFilter.class.php#L47
symfonyのイベント機構を採用しているので、本家の詳しい解説が参考になる。
http://www.symfony-project.org/reference/1_4/ja/15-Events