Problem mit zirkulären Abhängigkeiten durch Dekoratoren in Symfony 5.3.7

in  Verschiedenes , , , ,

Problem mit zirkulären Abhängigkeiten durch Dekoratoren in Symfony 5.3.7

Symfony erlaubt das Dekorieren von Services: hierbei wird im Gegensatz zum Überschreiben bestehender Services eine Ummantelung derselben vorgenommen. Immer dann, wenn der ursprüngliche Service injiziert werden soll, wird statt dessen der ihn dekorierende Ersatz verwendet. Dies ist immer dann praktisch, wenn man zusätzliche Funktionalität hinzufügen möchte, jedoch keinen Zugriff auf den originalen Service hat - zum Beispiel aus Gründen der Entkopplung oder schlicht und ergreifend weil das zu erweiternde Bundle von Dritten entwickelt wird. In Zikula wird beispielsweise Twig mit einem Dekorator erweitert, um mit Hilfe zusätzlicher Events vor und/oder nach dem Rendern eines Templates reagieren zu können.

Nach der Aktualisierung auf Symfony 5.3.7 entsteht allerdings eine Exception aufgrund einer zirkulären Abhängigkeit, sobald ein Decorator definiert wird. Das Problem wurde schnell identifiziert und behoben. Die Korrektur wird mit der kommenden Symfony-Version 5.3.8 ausgeliefert. Wer bis dahin einen schnellen Patch benötigt, findet ihn im dazugehörigen Pull Request.

Weitere Infos zu dem Konzept der Service Decorator können der Symfony-Doku entnommen werden.