From 601450e25e2df36409bfacac5fae7d8f54fa9c66 Mon Sep 17 00:00:00 2001 From: David Maicher Date: Wed, 27 Jun 2018 21:17:27 +0200 Subject: [PATCH] Update event_listeners_subscribers.rst --- doctrine/event_listeners_subscribers.rst | 53 ++---------------------- 1 file changed, 4 insertions(+), 49 deletions(-) diff --git a/doctrine/event_listeners_subscribers.rst b/doctrine/event_listeners_subscribers.rst index 694c9dbd1f8..17925ae0ee0 100644 --- a/doctrine/event_listeners_subscribers.rst +++ b/doctrine/event_listeners_subscribers.rst @@ -186,57 +186,12 @@ interface and have an event method for each event it subscribes to:: For a full reference, see chapter `The Event System`_ in the Doctrine documentation. -Lazy loading for Event Listeners +Performance considerations -------------------------------- -One subtle difference between listeners and subscribers is that Symfony can load -entity listeners lazily. This means that your listener class will only be fetched +One subtle difference between listeners and subscribers is that Symfony will load +entity listeners lazily by default as of Symfony 4.2. This means that your listener class will only be fetched from the service container (and thus be instantiated) once the event it is linked to actually fires. -Lazy loading might give you a slight performance improvement when your listener -runs for events that rarely fire. Also, it can help you when you run into -*circular dependency issues* that may occur when your listener service in turn -depends on the DBAL connection. - -To mark a listener service as lazily loaded, just add the ``lazy`` attribute -to the tag like so: - -.. configuration-block:: - - .. code-block:: yaml - - services: - App\EventListener\SearchIndexer: - tags: - - { name: doctrine.event_listener, event: postPersist, lazy: true } - - .. code-block:: xml - - - - - - - - - - - - .. code-block:: php - - use App\EventListener\SearchIndexer; - - $container - ->autowire(SearchIndexer::class) - ->addTag('doctrine.event_listener', array('event' => 'postPersist', 'lazy' => 'true')) - ; - -.. note:: - -   Marking an event listener as ``lazy`` has nothing to do with lazy service - definitions which are described :doc:`in their own section ` - -.. _`The Event System`: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html -.. _`the Doctrine Documentation`: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#entity-listeners +So whenever possible it is preferable to use entity listeners instead of subscribers.