Laravel

 0    94 flashcards    nowakowskilukasz12
download mp3 print play test yourself
 
Question język polski Answer język polski
Jak zabezpieczyć model Eloquent przed mass assignment?
start learning
Jawnie dozwolone pola ($fillable) lub odpowiednio chroniony model ($guarded), a dane wejściowe najpierw zwalidować - nie przekazywać niezwalidowanego request->all() bezpośrednio do mass assignment.
Jak Blade {{$x}} chroni domyślnie przed XSS?
start learning
Automatycznie przepuszcza wartość przez htmlspecialchars, więc wstrzyknięty <script> renderuje się jako zwykły tekst.
Kiedy {!!! $x!!!} w Blade jest niebezpieczne?
start learning
Gdy wyświetla dane wprost od użytkownika bez sanityzacji - świadomie wyłącza auto-escaping.
Co robi session()->regenerate() i kiedy jest wołane?
start learning
Generuje nowy session ID przy logowaniu, unieważniając stary - chroni przed session fixation.
Jakie realne ryzyko stwarza APP_DEBUG=true na produkcji?
start learning
Nieobsłużony wyjątek ujawnia pełny stack trace i często zmienne środowiskowe każdemu odwiedzającemu.
Gdzie jeszcze mogą wyciekać sekrety poza samym. env?
start learning
W logach aplikacyjnych, na stronie debug, w zcache'owanym bootstrap/cache/config. php i w logach CI/CD.
Co tworzy bootstrap/app. php przy starcie Laravela?
start learning
Instancję Illuminate\Foundation\Application, czyli sam kontener DI.
Jaka klasa jest pobierana z kontenera i woła handle() na requeście?
start learning
Illuminate\Contracts\Http\Kernel.
Co robi bootstrap() Kernela?
start learning
Uruchamia LoadEnvironmentVariables, LoadConfiguration, RegisterProviders i BootProviders.
Przez co przechodzi request zanim trafi do Routera?
start learning
Przez Pipeline z globalnym middleware zdefiniowanym w Kernelu.
Kiedy wołane jest terminate() na middleware?
start learning
Po wysłaniu response do klienta, w kernel->terminate().
Gdzie od Laravel 11 konfiguruje się middleware globalne zamiast w Kernel. php?
start learning
W bootstrap/app. php przez fluent API Application: configure().
Dlaczego route: cache wywala się przy trasie z closure?
start learning
Closure nie da się serializować do pliku cache - trasa musi wskazywać na kontroler.
Ile instancji zwróci dwukrotne app()->make() po zarejestrowaniu przez bind()?
start learning
Dwie różne instancje - bind() tworzy nową za każdym razem.
Ile instancji zwróci dwukrotne app()->make() po zarejestrowaniu przez singleton()?
start learning
Jedną, tę samą instancję z cache kontenera.
Jaka jest pułapka singletona w Laravel Octane?
start learning
Kontener żyje dłużej niż jeden request - mutowalny stan singletona wycieka między requestami.
Czym różni się scoped() od singleton()?
start learning
scoped() jest resetowany między requestami w Octane/queue workerach, singleton nie.
Co robi instance() w kontenerze?
start learning
Wstrzykuje już gotowy, wcześniej utworzony obiekt jako binding.
Po co jest bindIf()?
start learning
Rejestruje binding tylko jeśli jeszcze nie istnieje - przydatne w pakietach, by nie nadpisać configu aplikacji.
Co to jest contextual binding?
start learning
Różna implementacja tego samego interfejsu zależnie od klasy, do której jest wstrzykiwana.
Co robi kontener, gdy w konstruktorze jest type-hint na interfejs bez bindingu?
start learning
Rzuca BindingResolutionException.
Do czego służy app()->tag()?
start learning
Grupuje wiele bindingów pod jednym tagiem, żeby pobrać je razem.
Dlaczego register() nie może zakładać, że inne providery już się zarejestrowały?
start learning
Laravel woła register() na wszystkich providerach, dopiero potem boot() na wszystkich.
Co to są deferred providery?
start learning
Providery ładowane dopiero gdy ktoś faktycznie zażąda ich bindingu z kontenera, nie przy starcie aplikacji.
Co się dzieje, gdy PHP nie znajduje statycznej metody get() na klasie Route?
start learning
Wywołuje magiczną __callStatic(), która przez Facade deleguje do realnej instancji z kontenera.
Jaka metoda facade zwraca nazwę bindingu, np. router?
start learning
getFacadeAccessor().
Jaka jest realna wada nadużywania facades?
start learning
Ukryte zależności - sygnatura konstruktora nie pokazuje, czego klasa naprawdę potrzebuje.
Dlaczego env('APP_DEBUG') w kontrolerze zwróci null po config: cache?
start learning
Po cache'owaniu configu plik. env w ogóle nie jest wczytywany.
Gdzie wolno wołać env(), a gdzie nie?
start learning
W plikach config/*. php - w kodzie aplikacji korzystać z config(), bo po config: cache bezpośrednie env() poza konfiguracją może zwrócić null.
Co robi php artisan optimize?
start learning
Odpala łącznie config: cache, route: cache i view: cache.
Jakie ryzyko niesie optimize bez uprzedniego optimize: clear przy deployu?
start learning
Aplikacja może działać na starej, zamrożonej konfiguracji mimo zmienionych plików źródłowych.
Jak działa implicit route model binding?
start learning
Laravel woła User: where('id', $value)->firstOrFail() na podstawie type-hintu w kontrolerze.
Co zwraca aplikacja, gdy implicit route model binding nie znajdzie rekordu?
start learning
404, bo ModelNotFoundException jest automatycznie tłumaczony przez exception handler.
Jaki wzorzec projektowy stoi za middleware pipeline?
start learning
Pipeline - zagnieżdżone closures, de facto Decorator/Chain of Responsibility.
W jakiej kolejności wykonuje się kod po $next($request) w łańcuchu middleware?
start learning
W odwrotnej kolejności niż middleware były rejestrowane.
Co to jest terminable middleware?
start learning
Middleware z metodą terminate(), wołaną po wysłaniu response do klienta.
Dlaczego Post: with('comments')->get() czasem nie eliminuje N+1 przy dostępie do autora komentarza?
start learning
Bo relacja author nie została dociągnięta - trzeba with('comments. author').
Czy eager loading widzi N+1 ukryty w accessorze/getXAttribute()?
start learning
Nie - accessor to zwykły kod PHP, nie zadeklarowana relacja Eloquent.
Jakie narzędzie w Laravelu rzuca wyjątkiem przy każdej próbie lazy loadingu?
start learning
Model: preventLazyLoading() w AppServiceProvider: boot().
Czym różni się chunk() od cursor() pamięciowo?
start learning
chunk() hydratuje wiele modeli naraz, cursor() jeden model przez generator - mniej pamięci.
Który wybrać, gdy modyfikujesz dane w trakcie iteracji: chunk czy cursor?
start learning
chunkById - zwykły chunk może przeskoczyć rekordy przy usuwaniu w trakcie iteracji.
Jaka jest kolejność eventów modelu przy create()?
start learning
saving -> creating -> insert -> created -> saved.
Jaka jest kolejność eventów modelu przy update()?
start learning
saving -> updating -> update -> updated -> saved.
Czym jest Observer w Eloquencie?
start learning
Klasa z metodami o nazwach eventów modelu, rejestrowana przez Model: observe().
Dlaczego global scope bywa niebezpieczny?
start learning
Jest niewidoczny w miejscu wywołania - User: count() może zwrócić zaniżoną liczbę bez żadnego sygnału.
Co zapisuje trait SerializesModels przy dispatchu joba z modelem?
start learning
Nie serializuje całego modelu - zapisuje identyfikator modelu i informacje potrzebne do odtworzenia go po stronie workera, relacje mogą zostać ponownie załadowane zależnie od tego, co faktycznie zostało zserializowane.
Dlaczego dane w jobie mogą różnić się od stanu w momencie dispatch?
start learning
Worker przy odpaleniu joba pobiera świeży rekord z bazy, nie zapisaną kopię.
Czym różni się connection od queue w config/queue. php?
start learning
connection to backend (redis/sqs/database), queue to nazwa kolejki w ramach tego backendu.
Czym różni się failed_jobs w Laravelu od DLQ w SQS?
start learning
failed_jobs to mechanizm Laravela do zapisywania nieudanych jobów, DLQ to mechanizm brokera/kolejki - dokładne zachowanie zależy od drivera oraz konfiguracji retry i visibility timeout.
W jakiej kolejności budować cache przy zero-downtime deployu?
start learning
config: cache, route: cache, view: cache, migrate --force - dopiero potem przełączenie symlinku.
Czym różni się queue: restart od twardego kill procesu workera?
start learning
queue: restart pozwala workerowi dokończyć bieżący job i dopiero potem się zamknąć.
Jak assertować brak N+1 w teście Laravela?
start learning
DB: enableQueryLog() przed requestem, potem assertLessThanOrEqual na count(DB: getQueryLog()).
Dlaczego relacja morphTo jest trudniejszym przypadkiem N+1?
start learning
Generuje osobne zapytanie per typ powiązanego modelu, bo różne typy leżą w różnych tabelach.
Co robi DatabaseTransactions w testach Laravela?
start learning
Owija każdy test w transakcję i robi ROLLBACK na końcu, bez resetowania struktury bazy.
Co robi RefreshDatabase w testach Laravela?
start learning
Sprawdza czy migracje są aktualne, odpala je jeśli nie, i korzysta z transakcji per test.
Kiedy RefreshDatabase jest konieczny mimo że wolniejszy?
start learning
Gdy test jest wrażliwy na strukturę schematu albo sam robi commit/rollback ręcznie.
Jaka jest minimalna wersja PHP wymagana przez Laravel 11?
start learning
PHP 8.2.
Co zniknęło ze szkieletu aplikacji w Laravel 11?
start learning
app/Http/Kernel. php i app/Console/Kernel. php - konfiguracja przeniosła się do bootstrap/app. php.
Co zmienił Laravel 10 w typowaniu kodu?
start learning
Wprowadził natywne typy PHP we wszystkich metodach szkieletu i core frameworka.
Czym charakteryzuje się Laravel 12 względem Laravel 11?
start learning
Głównie aktualizacją zależności i nowymi starter kitami, bez dużych zmian strukturalnych.
Co to jest Laravel Precognition?
start learning
Mechanizm pozwalający walidować formularz na frontendzie bez duplikowania reguł walidacji z backendu.
Jakie są główne typy relacji w Eloquencie?
start learning
hasOne, hasMany, belongsTo, belongsToMany, hasManyThrough, morphMany/morphTo.
Czym różni się hasMany od belongsToMany?
start learning
hasMany to relacja 1: N przez klucz obcy, belongsToMany to N: N przez tabelę pośredniczącą (pivot).
Jak działają casty (casts()) przy odczycie atrybutu z bazy?
start learning
Eloquent przepuszcza surową wartość z PDO przez castAttribute() zgodnie z deklaracją, np. tworząc obiekt Carbon dla typu datetime.
Jak dziś zapisuje się mutator/accessor jednego atrybutu w Eloquencie (Laravel 9+)?
start learning
Jedna metoda zwracająca Attribute: make(get: ..., set: ...), zamiast osobnych getXAttribute()/setXAttribute().
Czym różni się local scope od global scope w Eloquencie?
start learning
Local scope jest świadomie wywoływany (User: active()), global scope dokłada się automatycznie do każdego zapytania na modelu.
Czym różnią się middleware grupy web i api w Laravelu?
start learning
web dokłada sesję i ochronę CSRF, api dokłada throttling bez sesji.
Czym różni się explicit route model binding od implicit?
start learning
Explicit rejestrujesz ręcznie przez Route: bind() z pełną kontrolą nad zapytaniem, implicit dzieje się automatycznie na podstawie type-hintu.
Jak Laravel harmonogramuje zadania cykliczne (Task Scheduling)?
start learning
Kodem w repozytorium przez $schedule->command(...)->daily(), jednym wpisem crona wołającym schedule: run.
Co to jest Package Discovery w Laravelu?
start learning
Paczki deklarują providery w composer. json (extra. laravel. providers), Laravel rejestruje je automatycznie bez ręcznej konfiguracji.
Jak zmockować wysyłkę maila w teście Laravela?
start learning
Mail: fake() przed akcją, potem Mail: assertSent().
Dlaczego mockowanie facade jest bezpieczne?
start learning
Facade to warstwa nad realnym obiektem z kontenera - podmiana instancji zmienia to, co widzi cała aplikacja.
Jak przetestować sam fakt dispatchu joba bez workera?
start learning
Queue: fake() i Queue: assertPushed().
Jak przetestować samą logikę joba bez mechanizmu kolejki?
start learning
Wywołać (new Job($x))->handle() bezpośrednio jak zwykłą klasę.
Dlaczego assertDatabaseHas() jest bezpieczniejsze niż sprawdzanie return z save()?
start learning
Weryfikuje faktyczny stan bazy, niezależnie jaką ścieżką zapis nastąpił.
Jaki jest odpowiednik loginUser() w Laravelu?
start learning
$this->actingAs($user).
Jak bezpiecznie zrestartować worker bez przerywania joba w trakcie?
start learning
queue: restart w Laravelu - kończy bieżący job, potem się zamyka.
Kiedy wybrać Sanctum zamiast Passport w Laravelu?
start learning
Gdy masz własny, ufany frontend (SPA/mobile), nie zewnętrznych deweloperów.
Kiedy wybrać Passport zamiast Sanctum?
start learning
Gdy API mają konsumować zewnętrzni deweloperzy z pełnym flow OAuth2 i scope'ami.
Jak Sanctum rozpoznaje request z SPA jako stateful?
start learning
Middleware EnsureFrontendRequestsAreStateful sprawdza domenę w config('sanctum. stateful').
Kiedy Form Request jest rozwiązywany względem wywołania kontrolera?
start learning
Przed - jako część wstrzykiwania argumentów w ArgumentResolverze.
Co się dzieje, gdy authorize() w Form Request zwróci false?
start learning
Kontroler się nie wykonuje, leci AuthorizationException.
Czym różni się singleton() w kontenerze Laravela od klasycznego wzorca Singleton?
start learning
Kontener zarządza jedną instancją per binding, ale sama klasa nie wymusza tego ograniczenia - to kontener, nie klasa, gwarantuje unikalność.
Co to jest Facade w Laravelu, w skrócie?
start learning
Statyczny interfejs do obiektu faktycznie zarejestrowanego w kontenerze DI, np. Cache: get() zamiast wstrzykiwać CacheManager.
Co to jest Service Provider w skrócie?
start learning
Miejsce rejestracji bindingów w kontenerze i konfiguracji danej funkcjonalności przy starcie aplikacji Laravel.
Co robi Artisan w Laravelu?
start learning
Wbudowane narzędzie CLI do generowania kodu, migracji, kolejek i innych zadań administracyjnych.
Co robi opcja retry_after w konfiguracji kolejki?
start learning
Określa po ilu sekundach job bez potwierdzenia zostanie uznany za martwy i ponownie umieszczony w kolejce - musi być dłuższy niż realny czas wykonania joba.
Jak ustawić rosnące opóźnienie między kolejnymi próbami joba w Laravelu?
start learning
Metoda backoff() na klasie joba, zwracająca liczbę sekund albo tablicę opóźnień per kolejna próba.
Dlaczego joby w Laravelu powinny być idempotentne?
start learning
Queue gwarantuje at-least-once delivery - ten sam job może wykonać się więcej niż raz, np. po timeout i redelivery.
Jak zapobiec dodaniu duplikatu tego samego joba do kolejki w Laravelu?
start learning
Implementacja interfejsu ShouldBeUnique - Laravel trzyma lock w cache, dopóki job nie zostanie przetworzony albo lock nie wygaśnie.
Co robi właściwość $timeout na klasie joba?
start learning
Maksymalny czas wykonania joba w sekundach - po przekroczeniu worker zabija proces, a job trafia do ponowienia albo do failed_jobs.
Czym różni się retryUntil() od tries na klasie joba?
start learning
tries liczy liczbę prób, retryUntil() ustawia twardy deadline czasowy - job przestaje być ponawiany po tej dacie niezależnie od liczby prób.
Czym różni się chain od batch w Laravel Queues?
start learning
Chain wykonuje joby sekwencyjnie jeden po drugim, batch uruchamia grupę jobów równolegle i pozwala śledzić ich łączny postęp.
Co robi driver kolejki sync w Laravelu?
start learning
Wykonuje job natychmiast, synchronicznie, w tym samym requeście - używany głównie lokalnie/w testach, nie na produkcji.

You must sign in to write a comment