這很簡單。 Symfony 2事件系統功能強大,服務標籤可以完成這項工作。
- 將調度器注入想要觸發事件的類中。服務ID是
event_dispatcher
;
- 需要時用
$this->dispatcher->dispatch('facebook.post_auth', new FilterFacebookEvent($args))
來啓動事件;
- 提供實施
EventSubscriberInterface
的服務,定義靜態的getSubscribedEvents()
方法。當然你想聽聽facebook.post_auth
事件。
所以你的靜態方法是這樣的:
static public function getSubscribedEvents()
{
return array(
'facebook.post_auth' => 'onPostAuthentication'
);
}
public function onPostAuthentication(FilterFacebookEvent $event)
{
// Do something, get the event args, etc
}
最後註冊該服務作爲調度用戶:給它一個標籤,然後做一個RegisterFacebookEventsSubscribersPass
(參見(如facebook.event_subscriber
。) this tutorial)。您編譯過程應該檢索所有標籤服務和循環內應該叫:
$dispatcher = $container->getDefinition('event_dispatcher');
$subscribers = $container->findTaggedServiceIds('facebook.event_subscriber');
foreach($subscribers as $id => $attributes) {
$definition->addMethodCall('addSubscriber', array(new Reference($id)));
}
這種方式可以快速使用戶(用於記錄,例如)簡單地標記爲您服務。
構造函數的參數是Facebook用戶令牌嗎? –
它可以是Facebook用戶令牌如果你想在聽衆中使用 – Ziumin
等等是什麼? Facebook的用戶? –