Aktywne Wpisy
dziadeq +496
Miesiąc temu: kobieta była gwałcona, dlaczego ludzie nie interweniują!?
Ludzie interweniują:
#bekazlewactwa #afera
Ludzie interweniują:
#bekazlewactwa #afera
StachZielonka +349
Skopiuj link
Skopiuj linkWykop.pl
@moporzysta: Pytanie trochę jak "do czego używa się pętli foreach" - bo mniej więcej taką funkcję spełniają CompilerPassy. Do wszystkiego, co sobie wymyślisz ;-)
Zajrzyj do kodu różnych bundli, czy kodu samego Symfony i zobacz do czego używają.
Przykładowo compiler pass może service'y oznaczone tagiem
'twig.extension'
zarejestrować w module Twiga.Albo dla klas posiadających
ContainerAwareTrait
wstrzykuje zależność kontenera.W samym frameworku Symofny jest kilkadziesiąt
najłatwiej to zrozumieć na event listener-ach
https://symfony.com/doc/current/event_dispatcher.html
autoconfigure
, to krok jeszcze dalej, bo nie musisz nawet dodawać danego rozszerzenia Twiga do services.yml, a któryś tam CompilesPass sam ogarnie. Także w tym scenariuszu nawet nie ma mowy o tagu, bo nie ma konfiguracji ;-)Gdyby nie było tagów, to musiałbyś stworzyć jakiś config z listą rozszerzeń Twiga, które mają być zarejestrowane. To by skutkowało konfiguracją tej klasy w dwóch miejscach. Można powiedzieć, że tagi, to taka forma
https://github.com/symfony/symfony/blob/e60a876201b5b306d0c81a24d9a3db997192079c/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigEnvironmentPass.php
Tu masz CompilerPass dodający rozszerzenia Twiga do service'a Twiga. ;-)
Komentarz usunięty przez autora
Jako laik, pewnie byś zrobił coś takiego:
$dashboard = new Dashboard();
$dashboard->addWidget(new WidgetOne());
$dashboard->addWidget(new Widget2());
$dashboard->addWidget(new Widget3());
$dashboard->addWidget(new Widget4());
Czyli byś zdefiniował na stałe widgety/ hardcoded. I tutaj jest problem, bo jak dodać widget bez modyfikacji kodu? Przecież jak zainstalujesz jakiegoś bundla, fajnie by było gdyby sam dodał widget to