Domanda |
Risposta |
Co robi filtr raw w Twig? inizia ad imparare
|
|
Wyłącza auto-escaping, analogicznie do {!!!} w Blade.
|
|
|
Jak działa Symfony Secrets Vault? inizia ad imparare
|
|
secrets: set szyfruje wartość i zapisuje w repo, klucz deszyfrujący trzymany osobno poza repo.
|
|
|
Co odpowiada za authentication w Symfony Security: firewall czy voter? inizia ad imparare
|
|
Firewall - określa mechanizm uwierzytelnienia dla danego zakresu URL.
|
|
|
Co odpowiada za authorization na poziomie konkretnego obiektu w Symfony? inizia ad imparare
|
|
Voter - sprawdza np. czy TEN user może edytować TEN konkretny post.
|
|
|
Czym jest access_control w security. yaml? inizia ad imparare
|
|
Deklaratywne reguły kto może wejść na dany prefix URL, oparte o role, sprawdzane przed kontrolerem.
|
|
|
Która strategia AccessDecisionManager przyznaje dostęp, jeśli choć jeden voter powie tak? inizia ad imparare
|
|
affirmative - domyślna strategia w Symfony Security.
|
|
|
Jaki event HttpKernel odpala się jako pierwszy? inizia ad imparare
|
|
kernel. request - tu działa routing, można od razu zwrócić Response.
|
|
|
Który event pozwala podmienić kontroler przed jego wywołaniem? inizia ad imparare
|
|
|
|
|
Kiedy dispatchowany jest kernel. view? inizia ad imparare
|
|
Tylko jeśli kontroler nie zwrócił obiektu Response (np. zwrócił tablicę/DTO).
|
|
|
Co robi listener na kernel. view w API? inizia ad imparare
|
|
Zamienia wynik kontrolera na Response, np. serializuje tablicę do JsonResponse.
|
|
|
Który event to ostatnia szansa modyfikacji gotowego Response? inizia ad imparare
|
|
|
|
|
Kiedy dispatchowany jest kernel. terminate? inizia ad imparare
|
|
Po obsłużeniu response - może posłużyć do pracy wykonywanej po odpowiedzi, ale to nie jest prawdziwa kolejka/background job, do niezawodnej pracy asynchronicznej służy np. Symfony Messenger.
|
|
|
Kiedy dispatchowany jest kernel. exception? inizia ad imparare
|
|
W dowolnym momencie, gdy coś rzuci wyjątek.
|
|
|
Co zatrzymuje propagację do domyślnego error handlera w listenerze na kernel. exception? inizia ad imparare
|
|
|
|
|
Co robi autowire w services. yaml? inizia ad imparare
|
|
Kontener sam odgaduje co wstrzyknąć w konstruktor na podstawie type-hintów.
|
|
|
Co robi autoconfigure w services. yaml? inizia ad imparare
|
|
Automatycznie taguje serwis na podstawie implementowanych interfejsów.
|
|
|
Czy autowire i autoconfigure to ta sama funkcja? inizia ad imparare
|
|
Nie - to dwie niezależne funkcje, można mieć jedną bez drugiej.
|
|
|
Dlaczego od Symfony 4 serwisy są domyślnie private? inizia ad imparare
|
|
Wymusza jawne DI - nie da się ich pobrać bezpośrednio z kontenera z zewnątrz.
|
|
|
Kiedy publiczny serwis ma dziś sens w Symfony? inizia ad imparare
|
|
Głównie w testach, przez static: getContainer()->get() w KernelTestCase.
|
|
|
Co się dzieje, gdy dwie klasy implementują ten sam interfejs, a autowire jest włączony? inizia ad imparare
|
|
Kontener rzuca błędem kompilacji, bo nie umie zgadnąć, którą wstrzyknąć.
|
|
|
Jak wskazać domyślną implementację interfejsu przy dwóch kandydatach? inizia ad imparare
|
|
Aliasować ją w services. yaml, np. App\Contract\Gateway: '@App\Service\StripeGateway'.
|
|
|
Gdzie trafia skompilowany kontener Symfony? inizia ad imparare
|
|
Do pliku w var/cache/{env}/.
|
|
|
Co to jest Compiler Pass? inizia ad imparare
|
|
Klasa implementująca CompilerPassInterface: process(), modyfikująca definicje serwisów w trakcie kompilacji.
|
|
|
Kiedy Compiler Pass jest potrzebny mimo autoconfigure? inizia ad imparare
|
|
Gdy trzeba zbiorczo połączyć otagowane serwisy z pełną kontrolą, np. sortowaniem po atrybucie tagu.
|
|
|
Gdzie rejestruje się Compiler Pass? inizia ad imparare
|
|
W metodzie build(ContainerBuilder $container) w src/Kernel. php.
|
|
|
Czym dziś jest Bundle w rozumieniu Symfony Flex? inizia ad imparare
|
|
Mechanizmem integracji dla paczek third-party, nie domyślnym sposobem organizacji własnego kodu.
|
|
|
Gdzie dziś leży kod własnej aplikacji Symfony? inizia ad imparare
|
|
Po prostu w src/, bez owijania go w bundle.
|
|
|
Co robi Symfony Flex przy composer require symfony/mailer? inizia ad imparare
|
|
Automatycznie dopisuje config/packages/mailer. yaml i zmienne do. env.
|
|
|
Która wartość wygrywa przy tej samej zmiennej w. env i. env. local? inizia ad imparare
|
|
. env. local, bo pliki lokalne mają wyższy priorytet niż domyślne.
|
|
|
Który plik. env ma najwyższy priorytet ze wszystkich? inizia ad imparare
|
|
Realne zmienne środowiskowe systemu.
|
|
|
Jaką metodę implementuje klasa dziedzicząca po Voter, by sprawdzić czy dotyczy danego atrybutu? inizia ad imparare
|
|
supports(string $attribute, mixed $subject).
|
|
|
Jaka metoda Votera zwraca faktyczną decyzję dostępu? inizia ad imparare
|
|
|
|
|
Jak rejestruje się Voter w kontenerze? inizia ad imparare
|
|
Automatycznie dzięki autoconfigure, bo klasa dziedziczy po Voter.
|
|
|
Jaka metoda authenticatora sprawdza, czy powinien obsłużyć dany request? inizia ad imparare
|
|
supports(Request):? bool.
|
|
|
Jaka metoda authenticatora buduje Passport z danymi logowania? inizia ad imparare
|
|
authenticate(Request): Passport.
|
|
|
Co robi persist($entity) w Doctrine? inizia ad imparare
|
|
Nie wykonuje żadnego SQL - tylko rejestruje obiekt jako zarządzany w UnitOfWork.
|
|
|
Co robi flush() w Doctrine? inizia ad imparare
|
|
Oblicza changeset i wykonuje realne zapytania SQL w jednej transakcji.
|
|
|
Co to jest Identity Map w Doctrine? inizia ad imparare
|
|
Mapa (typ encji + ID) -> obiekt, dzięki której drugie find() o tym samym ID zwraca ten sam obiekt z pamięci.
|
|
|
Jaka jest pułapka Identity Map w długo żyjącym procesie CLI? inizia ad imparare
|
|
EntityManager rośnie w pamięci, bo trzyma referencje do wszystkich pobranych encji.
|
|
|
Czym rozwiązać rosnącą pamięć EntityManagera w workerze? inizia ad imparare
|
|
Wołaniem entityManager->clear().
|
|
|
Co to jest proxy w Doctrine? inizia ad imparare
|
|
Wygenerowana klasa-cień z samym ID, doładowująca dane relacji dopiero przy pierwszym dostępie.
|
|
|
Czym różni się JOIN od JOIN FETCH w DQL? inizia ad imparare
|
|
JOIN może filtrować po powiązanej encji bez jej eager hydration, JOIN FETCH pobiera relację razem z encją i może ograniczyć N+1.
|
|
|
Skąd bierze się treść migracji generowanej przez doctrine: migrations: diff? inizia ad imparare
|
|
Z porównania realnego schematu bazy z mapowaniem encji - encje są źródłem prawdy.
|
|
|
Co owija wiadomość w Symfony Messenger? inizia ad imparare
|
|
Envelope, do którego doczepiane są Stamps (metadane).
|
|
|
Jak Symfony osiąga stały czas dopasowania trasy niezależnie od liczby tras? inizia ad imparare
|
|
Kompiluje wszystkie trasy do jednej zoptymalizowanej struktury regex w cache.
|
|
|
Co robi #[MapEntity], gdy encja o danym ID nie istnieje? inizia ad imparare
|
|
Rzuca NotFoundHttpException tłumaczone przez kernel. exception na 404.
|
|
|
Co realnie jest wyłączone w Symfony przy APP_ENV=prod? inizia ad imparare
|
|
Sprawdzanie timestampów plików konfiguracyjnych przy każdym requeście.
|
|
|
Dlaczego zmiana services. yaml na produkcji Symfony nie działa bez cache: clear? inizia ad imparare
|
|
Produkcyjny kontener to zamrożony, wygenerowany kod PHP w var/cache/prod/.
|
|
|
Jakiej komendy użyć, żeby wymusić przebudowę kontenera Symfony na produkcji? inizia ad imparare
|
|
php bin/console cache: clear --env=prod.
|
|
|
Po co dodatkowo cache: warmup po deployu w Symfony? inizia ad imparare
|
|
Żeby pierwszy request po deployu nie płacił kosztu budowania kontenera.
|
|
|
Jaka jest minimalna wersja PHP wymagana przez Symfony 6? inizia ad imparare
|
|
|
|
|
Jaka jest minimalna wersja PHP wymagana przez Symfony 7? inizia ad imparare
|
|
|
|
|
Co zastąpiły atrybuty PHP w Symfony 6+ względem starszych wersji? inizia ad imparare
|
|
Adnotacje w komentarzach (@Route) - dziś standardem są natywne atrybuty #[Route].
|
|
|
Co to jest Symfony LTS (Long Term Support)? inizia ad imparare
|
|
Wersja wspierana dłużej (np. 6.4), wydawana co 2 lata, dobra baza pod stabilne projekty.
|
|
|
Co domyślnie zastępuje Webpack Encore w nowszych wersjach Symfony? inizia ad imparare
|
|
AssetMapper - natywne zarządzanie assetami bez bundlera.
|
|
|
Jakie są trzy sposoby definiowania tras w Symfony? inizia ad imparare
|
|
Atrybuty PHP #[Route] (dziś domyślne), YAML w config/routes. yaml oraz konfiguracja tras w PHP przez RouteCollection.
|
|
|
Do czego służą route requirements w Symfony? inizia ad imparare
|
|
Ograniczają wartość parametru trasy regexem, np. \d+ dla ID - bez nich trasa dopasuje dowolny string.
|
|
|
Czym DQL różni się od QueryBuilder i natywnego SQL w Doctrine? inizia ad imparare
|
|
DQL operuje na encjach/polach nie tabelach, QueryBuilder to programistyczne budowanie DQL, natywny SQL omija ORM dla specyficznych funkcji silnika bazy.
|
|
|
Do czego służy KernelTestCase w Symfony? inizia ad imparare
|
|
Testy integracyjne serwisów z dostępem do kontenera, bez symulacji requestu HTTP.
|
|
|
Do czego służy WebTestCase w Symfony? inizia ad imparare
|
|
Testy feature całych endpointów przez symulowany KernelBrowser.
|
|
|
Jak zalogować użytkownika w teście Symfony bez formularza? inizia ad imparare
|
|
$client->loginUser($user).
|
|
|
Jak przetestować serwis zależny od EntityManagera bez realnej bazy? inizia ad imparare
|
|
Mockując EntityManagerInterface albo używając bazy testowej SQLite in-memory.
|
|
|
Czy JWT stateless firewall w Symfony korzysta z sesji PHP? inizia ad imparare
|
|
Nie - cała tożsamość jedzie podpisana w nagłówku Authorization każdego requestu.
|
|
|
Jaki atrybut Symfony automatyzuje deserializację i walidację DTO naraz? inizia ad imparare
|
|
|
|
|
Jak Doctrine implementuje optymistyczne blokowanie? inizia ad imparare
|
|
Kolumną #[Version] na encji - flush() rzuca OptimisticLockException, jeśli wersja w bazie nie zgadza się z wczytaną.
|
|
|
Co to jest UnitOfWork w Doctrine? inizia ad imparare
|
|
Wewnętrzny mechanizm śledzący wszystkie zarządzane encje i ich zmiany, który przy flush() oblicza changeset i generuje odpowiednie zapytania SQL.
|
|
|
Czym różni się owning side od inverse side relacji w Doctrine? inizia ad imparare
|
|
Owning side ma kolumnę z kluczem obcym i to ona decyduje o zapisie do bazy, inverse side (mappedBy) tylko odzwierciedla relację i sama w sobie nic nie zapisuje.
|
|
|
Do czego służy mappedBy, a do czego inversedBy w Doctrine? inizia ad imparare
|
|
mappedBy ustawia się po stronie inverse i wskazuje nazwę właściwości po stronie owning, inversedBy ustawia się po stronie owning i wskazuje właściwość po stronie inverse.
|
|
|
Co robi opcja cascade w mapowaniu relacji Doctrine? inizia ad imparare
|
|
Automatycznie propaguje operację (np. persist, remove) z encji nadrzędnej na powiązane encje, bez ręcznego wołania jej na każdej z osobna.
|
|
|
Co robi orphanRemoval: true w Doctrine? inizia ad imparare
|
|
Usuwa z bazy powiązaną encję, gdy zostanie odłączona od kolekcji rodzica, nawet bez jawnego remove().
|
|
|
Czym różni się lazy loading od eager loading w Doctrine? inizia ad imparare
|
|
Lazy loading przez proxy dociąga relację dopiero przy pierwszym dostępie, eager loading (JOIN FETCH) pobiera ją od razu w tym samym zapytaniu.
|
|
|
Jak jawnie owinąć kilka operacji w transakcję w Doctrine? inizia ad imparare
|
|
entityManager->wrapInTransaction(closure) albo ręcznie beginTransaction()/commit()/rollback() - sam flush() już działa wewnątrz jednej transakcji.
|
|
|