容器知道事件调度器

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.3,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

容器知道事件调度器

介绍

ContainerAwareEventDispatcher是一种特殊的EventDispatcher实现耦合的服务容器的一部分DependencyInjection组件。它允许服务指定为事件监听器的EventDispatcher非常强大。

服务是懒加载意义才会创建附加的服务作为监听器如果事件是派遣,需要这些听众。

设置

设置简单的通过注射ContainerInterfaceContainerAwareEventDispatcher:

1 2 3 4 5
使用欧宝娱乐app下载地址\组件\DependencyInjection\ContainerBuilder;使用欧宝娱乐app下载地址\组件\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 32
使用欧宝娱乐app下载地址\组件\EventDispatcher\EventSubscriberInterface;使用欧宝娱乐app下载地址\组件\HttpKernel\KernelEvents;/ /……StoreSubscriber实现了EventSubscriberInterface{公共静态函数getSubscribedEvents(){返回数组(KernelEvents::响应= >数组(数组(“onKernelResponsePre”,10),数组(“onKernelResponsePost”,0),),“store.order”= >数组(“onStoreOrder”,0),);}公共函数onKernelResponsePre(FilterResponseEvent美元事件){/ /……}公共函数onKernelResponsePost(FilterResponseEvent美元事件){/ /……}公共函数onStoreOrder(FilterOrderEvent美元事件){/ /……}}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。