容器知道事件调度器
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.6,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
容器知道事件调度器
介绍
的ContainerAwareEventDispatcher是一种特殊的EventDispatcher
实现耦合的服务容器的一部分DependencyInjection组件。它允许服务指定为事件监听器的EventDispatcher
非常强大。
服务是懒加载意义才会创建附加的服务作为监听器如果事件是派遣,需要这些听众。
设置
设置简单的通过注射ContainerInterface到ContainerAwareEventDispatcher:
1 2 3 4 5
使用ob娱乐下载\组件\DependencyInjection\ContainerBuilder;使用ob娱乐下载\组件\EventDispatcher\ContainerAwareEventDispatcher;美元容器=新ContainerBuilder ();美元调度程序=新ContainerAwareEventDispatcher (美元容器);
添加侦听器
的ContainerAwareEventDispatcher
可以直接加载指定的服务或服务实现吗EventSubscriberInterface。
下面的例子假定服务容器已经装满提到的任何服务。
请注意
服务必须标记为公共的容器。
添加服务
连接现有的服务定义,使用addListenerService ()方法的美元的回调
是一个数组的阵列(serviceId, methodName美元)
:
1
美元调度程序- >addListenerService (美元eventName,数组(“foo”,“logListener”));
添加用户服务
用户可以添加使用addSubscriberService ()方法的第一个参数是服务ID用户服务,和第二个参数是服务的类名(必须实现EventSubscriberInterface)如下:
1 2 3 4
美元调度程序- >addSubscriberService (“kernel.store_subscriber”,“StoreSubscriber”);
的EventSubscriberInterface
正如您所期望的是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31
使用ob娱乐下载\组件\EventDispatcher\EventSubscriberInterface;/ /……类StoreSubscriber实现了EventSubscriberInterface{公共静态函数getSubscribedEvents(){返回数组(“kernel.response”= >数组(数组(“onKernelResponsePre”,10),数组(“onKernelResponsePost”,0),),“store.order”= >数组(“onStoreOrder”,0),);}公共函数onKernelResponsePre(FilterResponseEvent美元事件){/ /……}公共函数onKernelResponsePost(FilterResponseEvent美元事件){/ /……}公共函数onStoreOrder(FilterOrderEvent美元事件){/ /……}}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。