Laravel

 0    94 fiche    nowakowskilukasz12
Télécharger mP3 Imprimer jouer consultez
 
question język polski réponse język polski
Jak zabezpieczyć model Eloquent przed mass assignment?
commencer à apprendre
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?
commencer à apprendre
Automatycznie przepuszcza wartość przez htmlspecialchars, więc wstrzyknięty <script> renderuje się jako zwykły tekst.
Kiedy {!!! $x!!!} w Blade jest niebezpieczne?
commencer à apprendre
Gdy wyświetla dane wprost od użytkownika bez sanityzacji - świadomie wyłącza auto-escaping.
Co robi session()->regenerate() i kiedy jest wołane?
commencer à apprendre
Generuje nowy session ID przy logowaniu, unieważniając stary - chroni przed session fixation.
Jakie realne ryzyko stwarza APP_DEBUG=true na produkcji?
commencer à apprendre
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?
commencer à apprendre
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?
commencer à apprendre
Instancję Illuminate\Foundation\Application, czyli sam kontener DI.
Jaka klasa jest pobierana z kontenera i woła handle() na requeście?
commencer à apprendre
Illuminate\Contracts\Http\Kernel.
Co robi bootstrap() Kernela?
commencer à apprendre
Uruchamia LoadEnvironmentVariables, LoadConfiguration, RegisterProviders i BootProviders.
Przez co przechodzi request zanim trafi do Routera?
commencer à apprendre
Przez Pipeline z globalnym middleware zdefiniowanym w Kernelu.
Kiedy wołane jest terminate() na middleware?
commencer à apprendre
Po wysłaniu response do klienta, w kernel->terminate().
Gdzie od Laravel 11 konfiguruje się middleware globalne zamiast w Kernel. php?
commencer à apprendre
W bootstrap/app. php przez fluent API Application: configure().
Dlaczego route: cache wywala się przy trasie z closure?
commencer à apprendre
Closure nie da się serializować do pliku cache - trasa musi wskazywać na kontroler.
Ile instancji zwróci dwukrotne app()->make() po zarejestrowaniu przez bind()?
commencer à apprendre
Dwie różne instancje - bind() tworzy nową za każdym razem.
Ile instancji zwróci dwukrotne app()->make() po zarejestrowaniu przez singleton()?
commencer à apprendre
Jedną, tę samą instancję z cache kontenera.
Jaka jest pułapka singletona w Laravel Octane?
commencer à apprendre
Kontener żyje dłużej niż jeden request - mutowalny stan singletona wycieka między requestami.
Czym różni się scoped() od singleton()?
commencer à apprendre
scoped() jest resetowany między requestami w Octane/queue workerach, singleton nie.
Co robi instance() w kontenerze?
commencer à apprendre
Wstrzykuje już gotowy, wcześniej utworzony obiekt jako binding.
Po co jest bindIf()?
commencer à apprendre
Rejestruje binding tylko jeśli jeszcze nie istnieje - przydatne w pakietach, by nie nadpisać configu aplikacji.
Co to jest contextual binding?
commencer à apprendre
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?
commencer à apprendre
Rzuca BindingResolutionException.
Do czego służy app()->tag()?
commencer à apprendre
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?
commencer à apprendre
Laravel woła register() na wszystkich providerach, dopiero potem boot() na wszystkich.
Co to są deferred providery?
commencer à apprendre
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?
commencer à apprendre
Wywołuje magiczną __callStatic(), która przez Facade deleguje do realnej instancji z kontenera.
Jaka metoda facade zwraca nazwę bindingu, np. router?
commencer à apprendre
getFacadeAccessor().
Jaka jest realna wada nadużywania facades?
commencer à apprendre
Ukryte zależności - sygnatura konstruktora nie pokazuje, czego klasa naprawdę potrzebuje.
Dlaczego env('APP_DEBUG') w kontrolerze zwróci null po config: cache?
commencer à apprendre
Po cache'owaniu configu plik. env w ogóle nie jest wczytywany.
Gdzie wolno wołać env(), a gdzie nie?
commencer à apprendre
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?
commencer à apprendre
Odpala łącznie config: cache, route: cache i view: cache.
Jakie ryzyko niesie optimize bez uprzedniego optimize: clear przy deployu?
commencer à apprendre
Aplikacja może działać na starej, zamrożonej konfiguracji mimo zmienionych plików źródłowych.
Jak działa implicit route model binding?
commencer à apprendre
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?
commencer à apprendre
404, bo ModelNotFoundException jest automatycznie tłumaczony przez exception handler.
Jaki wzorzec projektowy stoi za middleware pipeline?
commencer à apprendre
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?
commencer à apprendre
W odwrotnej kolejności niż middleware były rejestrowane.
Co to jest terminable middleware?
commencer à apprendre
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?
commencer à apprendre
Bo relacja author nie została dociągnięta - trzeba with('comments. author').
Czy eager loading widzi N+1 ukryty w accessorze/getXAttribute()?
commencer à apprendre
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?
commencer à apprendre
Model: preventLazyLoading() w AppServiceProvider: boot().
Czym różni się chunk() od cursor() pamięciowo?
commencer à apprendre
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?
commencer à apprendre
chunkById - zwykły chunk może przeskoczyć rekordy przy usuwaniu w trakcie iteracji.
Jaka jest kolejność eventów modelu przy create()?
commencer à apprendre
saving -> creating -> insert -> created -> saved.
Jaka jest kolejność eventów modelu przy update()?
commencer à apprendre
saving -> updating -> update -> updated -> saved.
Czym jest Observer w Eloquencie?
commencer à apprendre
Klasa z metodami o nazwach eventów modelu, rejestrowana przez Model: observe().
Dlaczego global scope bywa niebezpieczny?
commencer à apprendre
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?
commencer à apprendre
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?
commencer à apprendre
Worker przy odpaleniu joba pobiera świeży rekord z bazy, nie zapisaną kopię.
Czym różni się connection od queue w config/queue. php?
commencer à apprendre
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?
commencer à apprendre
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?
commencer à apprendre
config: cache, route: cache, view: cache, migrate --force - dopiero potem przełączenie symlinku.
Czym różni się queue: restart od twardego kill procesu workera?
commencer à apprendre
queue: restart pozwala workerowi dokończyć bieżący job i dopiero potem się zamknąć.
Jak assertować brak N+1 w teście Laravela?
commencer à apprendre
DB: enableQueryLog() przed requestem, potem assertLessThanOrEqual na count(DB: getQueryLog()).
Dlaczego relacja morphTo jest trudniejszym przypadkiem N+1?
commencer à apprendre
Generuje osobne zapytanie per typ powiązanego modelu, bo różne typy leżą w różnych tabelach.
Co robi DatabaseTransactions w testach Laravela?
commencer à apprendre
Owija każdy test w transakcję i robi ROLLBACK na końcu, bez resetowania struktury bazy.
Co robi RefreshDatabase w testach Laravela?
commencer à apprendre
Sprawdza czy migracje są aktualne, odpala je jeśli nie, i korzysta z transakcji per test.
Kiedy RefreshDatabase jest konieczny mimo że wolniejszy?
commencer à apprendre
Gdy test jest wrażliwy na strukturę schematu albo sam robi commit/rollback ręcznie.
Jaka jest minimalna wersja PHP wymagana przez Laravel 11?
commencer à apprendre
PHP 8.2.
Co zniknęło ze szkieletu aplikacji w Laravel 11?
commencer à apprendre
app/Http/Kernel. php i app/Console/Kernel. php - konfiguracja przeniosła się do bootstrap/app. php.
Co zmienił Laravel 10 w typowaniu kodu?
commencer à apprendre
Wprowadził natywne typy PHP we wszystkich metodach szkieletu i core frameworka.
Czym charakteryzuje się Laravel 12 względem Laravel 11?
commencer à apprendre
Głównie aktualizacją zależności i nowymi starter kitami, bez dużych zmian strukturalnych.
Co to jest Laravel Precognition?
commencer à apprendre
Mechanizm pozwalający walidować formularz na frontendzie bez duplikowania reguł walidacji z backendu.
Jakie są główne typy relacji w Eloquencie?
commencer à apprendre
hasOne, hasMany, belongsTo, belongsToMany, hasManyThrough, morphMany/morphTo.
Czym różni się hasMany od belongsToMany?
commencer à apprendre
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?
commencer à apprendre
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+)?
commencer à apprendre
Jedna metoda zwracająca Attribute: make(get: ..., set: ...), zamiast osobnych getXAttribute()/setXAttribute().
Czym różni się local scope od global scope w Eloquencie?
commencer à apprendre
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?
commencer à apprendre
web dokłada sesję i ochronę CSRF, api dokłada throttling bez sesji.
Czym różni się explicit route model binding od implicit?
commencer à apprendre
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)?
commencer à apprendre
Kodem w repozytorium przez $schedule->command(...)->daily(), jednym wpisem crona wołającym schedule: run.
Co to jest Package Discovery w Laravelu?
commencer à apprendre
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?
commencer à apprendre
Mail: fake() przed akcją, potem Mail: assertSent().
Dlaczego mockowanie facade jest bezpieczne?
commencer à apprendre
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?
commencer à apprendre
Queue: fake() i Queue: assertPushed().
Jak przetestować samą logikę joba bez mechanizmu kolejki?
commencer à apprendre
Wywołać (new Job($x))->handle() bezpośrednio jak zwykłą klasę.
Dlaczego assertDatabaseHas() jest bezpieczniejsze niż sprawdzanie return z save()?
commencer à apprendre
Weryfikuje faktyczny stan bazy, niezależnie jaką ścieżką zapis nastąpił.
Jaki jest odpowiednik loginUser() w Laravelu?
commencer à apprendre
$this->actingAs($user).
Jak bezpiecznie zrestartować worker bez przerywania joba w trakcie?
commencer à apprendre
queue: restart w Laravelu - kończy bieżący job, potem się zamyka.
Kiedy wybrać Sanctum zamiast Passport w Laravelu?
commencer à apprendre
Gdy masz własny, ufany frontend (SPA/mobile), nie zewnętrznych deweloperów.
Kiedy wybrać Passport zamiast Sanctum?
commencer à apprendre
Gdy API mają konsumować zewnętrzni deweloperzy z pełnym flow OAuth2 i scope'ami.
Jak Sanctum rozpoznaje request z SPA jako stateful?
commencer à apprendre
Middleware EnsureFrontendRequestsAreStateful sprawdza domenę w config('sanctum. stateful').
Kiedy Form Request jest rozwiązywany względem wywołania kontrolera?
commencer à apprendre
Przed - jako część wstrzykiwania argumentów w ArgumentResolverze.
Co się dzieje, gdy authorize() w Form Request zwróci false?
commencer à apprendre
Kontroler się nie wykonuje, leci AuthorizationException.
Czym różni się singleton() w kontenerze Laravela od klasycznego wzorca Singleton?
commencer à apprendre
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?
commencer à apprendre
Statyczny interfejs do obiektu faktycznie zarejestrowanego w kontenerze DI, np. Cache: get() zamiast wstrzykiwać CacheManager.
Co to jest Service Provider w skrócie?
commencer à apprendre
Miejsce rejestracji bindingów w kontenerze i konfiguracji danej funkcjonalności przy starcie aplikacji Laravel.
Co robi Artisan w Laravelu?
commencer à apprendre
Wbudowane narzędzie CLI do generowania kodu, migracji, kolejek i innych zadań administracyjnych.
Co robi opcja retry_after w konfiguracji kolejki?
commencer à apprendre
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?
commencer à apprendre
Metoda backoff() na klasie joba, zwracająca liczbę sekund albo tablicę opóźnień per kolejna próba.
Dlaczego joby w Laravelu powinny być idempotentne?
commencer à apprendre
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?
commencer à apprendre
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?
commencer à apprendre
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?
commencer à apprendre
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?
commencer à apprendre
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?
commencer à apprendre
Wykonuje job natychmiast, synchronicznie, w tym samym requeście - używany głównie lokalnie/w testach, nie na produkcji.

Vous devez vous connecter pour poster un commentaire.