簡體   English   中英

symfony2事件調度程序延遲加載偵聽器

[英]symfony2 event dispatcher lazy loading listener

我正在使用Symfony Event Dispatcher創建一些自己的事件,效果很好。

但是我注意到,我在symfony中配置的監聽器不是延遲加載的,它總是被初始化。 但是很少使用。

我的services.yml中的配置如下所示:

my.handler:
    class: Acme\AcmeBundle\DependencyInjection\MyHandler
    arguments:
      - @my.dependency
    tags:
      - { name: kernel.event_listener, event: my.event, method: handle }

有沒有一種配置方式使得@ my.handler僅在事件觸發時被初始化? 因為現在將其推入分派器時已初始化(及其所有依賴項)。

有關於ContainerAwareEventDispatcher的文檔: http ://symfony.com/doc/current/components/event_dispatcher/container_aware_dispatcher.html但這僅說明了如何直接在PHP中使用它,而不是如何在標准symfony2項目中對其進行配置。

你可以把它定義為一個懶惰的服務加上相對標簽(如描述這里 )為例:

my.handler:
    class: Acme\AcmeBundle\DependencyInjection\MyHandler
    lazy: true
    arguments:
      - @my.dependency
    tags:
      - { name: kernel.event_listener, event: my.event, method: handle }

請記住按照文檔中的說明安裝ProxyManager橋

希望這個幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM