SynfonyのEventとEvent Listener
なんかいまいち構成要素を掴めていない無いなmrsekut.icon
Listenerとなるclass
2つある
Event Listener
listenするEventが動的に決まる(?)
Event subscriberより柔軟(?) ref Event Subscriber
内部で、複数のlistenerをmethodとして定義できる
listenするEventが静的に決まる(?)
同じeventを異なるsubscriberがlistenすることもある
その場合の順序は数値で優先づけする
code:php
public static function getSubscribedEvents()
{
// return the subscribed events, their methods and priorities
return [
KernelEvents::EXCEPTION => [
],
];
}
Event listenerより再利用しやすい
Eventとなるclass
が、別々に存在する
listenする対象
e.g. divタグ
action
eventが起きた時に、起こしたいもの
e.g. 色を変える
listener
上2つを結びつけるもの
listernする対象と、actionを結びつける
event
e.g. clickされた
dispatch
listern対象に、eventを引き起こさせる
こうすることで、listenerがそれを検知して、actionが生じる
table:対応
synfony Redux
event event class
listenする対象 store
action action
listener listener class、subscliber class
dispatch this->eventDispatcher->dispatch dispatch
↓たぶんまちがってる
ここに呼ばれるEventの定義をする
Eventは、getSubscribedEvents()で登録する
code:php
public static function getSubscribedEvents(){
return [
HogeEvents::HOGE => 'hoge'
];
}
以下で呼び出される
code:php
$event = new InteractiveLoginEvent($request, $newToken);
$this->eventDispatcher->dispatch(HogeEvents::HOGE, $event);
なぜ関数ではなくevent listienrを使用する?
わかりにくさが増している気がするが
どういう時に使うのが正解?\
dispatcherって何?
debug方法
なんか思ってたのと違うな
eventをlistenしてるlistenerを一覧するだけか
みたいな感じで呼び出すやつ
eccubeのdocs
何の参考にもならない