Member-only story

Symfony: cómo resolver una dependencia circular

Técnicas para resolver una dependencia circular empleando el Event Dispatcher

Gerardo Fernández
4 min readMay 14, 2019

Hoy quiero hablaros de un error muy común con el que os podéis topar al montar aplicaciones relativamente complejas con Symfony: la dependencia circular entre servicios.

Este error, cuyo aspecto es similar al siguiente:

Circular reference detected for service "security.authorization_checker", path: "sensio_framework_extra.security.listener -> security.authorization_checker -> security.authentication.manager -> security.user.provider.concrete.entity_provider -> doctrine.orm.default_entity_manager -> doctrine.dbal.default_connection -> app.listener.user -> app.mail_service -> templating -> twig -> security.context".

sucede en el momento en el que cerramos un círculo de dependencias en el que el servicio A depende del B, que a su vez depende de C y éste último de A.

A -> B -> C -> A

Una de las situaciones más comunes en las que nos puede aparecer es la siguiente:

  • Declarar un DoctrineEntityListener para que cada vez que se genere un evento postPersist enviemos un email.
  • Este email se envía por medio de una clase (por ejemplo AppMailer ) que inyectaremos en el…

--

--

Gerardo Fernández
Gerardo Fernández

Written by Gerardo Fernández

Entre paseo y paseo con Simba desarrollo en Symfony y React

No responses yet