![Laravel 11 új funkciók](/storage/blogok/Laravel 11 new features.webp?1725754465)
A Laravel 11 2024 március 12-én jött ki, sok új és hasznos dolgot hozva magával!
Nézzük meg együtt, hogy mik is ezek az új feature-ok!
Követelmények
A Laravel 11 telepítéséhez már a php 8.2-es verzióját kell használnunk. Ezen kívül nincs egyéb megkötés a követelmények terén.
Új üdvözlő oldal
Ismételten változott a Laravel üdvözlő oldala, a mostanában divat “bento-box" stílusára hajazva. Nekem személy szerint tetszik, - minimalista. Jó látni, hogy ha még csak egy egyszerű üdvözlő oldalon is, de követik a dizájn trendeket. Kicsit ez a minimalista szellem határozza meg az egész Laravel 11-et, de ezt a gondolatot a következő fejezetekben jobban kifejtem.
![](/storage/blogok/kezdo.webp?1714654516)
Mappa struktúra - új, minimalista mappa struktúra
Elsőnek is, amely a legszembetűnőbb lehet sokak számára, az az új, kissebb és letisztultabb mappa struktúra. Kezdő fejlesztők számára eleinte talán több bizalmat tud adni, hogy nem egy “bloated” alap alkalmazást kap, viszont erre később oda kell figyelni, hogy nem egy-egy hiányzó funkcióról beszélünk, hanem csak elrejtették őket.
Nagyon sok “sallangot” rejtettek el Taylorék - elsősorban konfigurációs fájlokat teljes egészében, bár ez később csak ezekre a fájlokra lettek érvényesek:
- config/broadcasting
- config/cors.php
- config/hashing.php
- config/sanctum.php
- config/view.php
De van-e rá mód, hogy visszaállítsuk a fájlokat? Mi történik, ha pont egy adott fájl-t szeretnénk szerkeszteni, és nem találjuk a rendszerben?
Természetesen, ezeket a fájlokat visszaállíthatjuk, a következő parancs segítségével - “php artisan config:publish”
Egy kicsit hasonlít a dolog arra, ahogyan a mail template-ket rejtették el, azokat is publisholni kell, hogy szerkeszthessük. - Fordult már velem is elő, hogy hirtelen nem találtam azt a mail komponenst, amit szerettem volna szerkeszteni (header, footer, layout stb).
Ezeken kívül eltávolításra kerültek a következő mappák is:
app/Console, app/Exceptions, app/Http/Middleware
Ennek az is lehet az oka, hogy már a routeok, middlewarek és exceptionoket a bootstrap/app.php-ban kell regisztrálni.
Ez tud jó dolog is lenni, de nekem talán a régebbi jobban tetszett.
![](/storage/blogok/fcode.webp?1714654516)
once() segítő funkció
Új "memoizáló" funkció, a React-ból már ismerté vált useMemo hook funkcionalitását látja el. (Persze,a memoisation-t nem csak react-ben használják) Lényegében azt biztosítja, a lifecycle / request erejéig a funkcióban visszatért érték nem változik, mindig ugyanazzal az értékkel tér vissza, erőforrást takarít meg.
Erre ez előtt, használhattuk pl. a spatie/once package-t. (céges szállóigévé vált már, mindenre van már egy spatie package 😁). De mindenképpen jó dolog az, hogy ez már rendszer szinten implementálva lett.
Ezt a kis segítő funkció-t Nuno Maduro fejlesztette a rendszerbe, aki a laravel core tagjai közé tartozik.
Service providerek regisztrálása
A Laravel 11 előtti projektetkben az adott service providerek regisztrálása az app.php-ban történt. Ez most változott, hiszen ha készítünk egy provider-t artisan segítségével, az automatikusan regisztrációra kerül, és használhatóvá válik. Ha manuálisan készítjük el, akkor a bootstrap/providers.php-ban kell megadnunk, egy tömbbe a providert namespacelve. Ez azért lehet jó, mert egy külön config fájlt kapott, nem kell a többi kulcs érték párok mellé tenni az app.php-ban.
![](/storage/blogok/providers.webp?1714654516)
Middlewarek
Régebbi alkalmazásokban az app/Http/Kernel-ben tudtuk regisztrálni middlewarejeinket, ezen szintén változtattak Taylorék.
Új alkalmazásokban már a bootstrap/app.php-ban kell regisztrálni őket, a withMiddleware callback függvénybe.
Tisztábbnak tisztább lesz a kód, de valahogy mégis jobban preferálom a régebbi módot.
Alapértelmezett Health Check Route
![](/storage/blogok/hcroute.webp?1714654516)
Ha a /up route-ra egy requestet küldünk, a Laravel elindít egy DiagnosingHealth eventet, és több ellenőrzést is végrehajthatunk igény szerint.
Új, php artisan:make parancsok
Lehetőségünk nyílt osztályok, interfacek, traitek és enumok létrehozására is - parancssorról megadva.
Ehhez nincs más dolgunk, mint bepötyögni hogy:
php artisan make:class
Ez felgyorsíthatja a munkánkat, szerintem mindenféleképpen jó dolog, mi is sokat fogjuk használni, már csak az enumok végett is.
cast metódus
Mindeddig, ha egy model adatát castolni szerettük volna, megtehettük a modellen lévő protected cast property-n.
Ez most megváltozott, hiszen egy új irányba lépve, ez már egy metóduson keresztül fog megvalósulni.
protected function casts(): array {
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'options' => AsEnumCollection::of(UserOption::class),
];
Ennek az értelme talán az lehet, hogy meg tudsz majd hívni statikus metódusokat - természetesen ezt az előző, tömbös verzión nem tudtad megcsinálni. Ez azért lehet jó, mert jobban néz ki pl. collection-ök esetében, illetve jobb az IDE support. Nem egy nagy változás, inkább syntax sugarnak nevezném, de minden esetre nice to have.
Ha tovább szeretnél olvasni, a Laravel 11-ről ezt megteheted ezen a linken: