Laravel 11

Laravel 11 – šta je novo?

Laravel 11 nam donosi neka značajna unapređenja u odnosu na verziju 10. Podrazumevana podrška za SQLite, napredna ograničenja zahteva, jednostavnija struktura, samo su neka od novina koje nam dolaze u Laravelu 11. Zato hajde da prođemo kroz sva ova unapređenja i predstavimo ih jedan po jedan.

SQLite kao podrazumevana baza podataka

U Laravelu 11, SQLite je podrazumevana baza podataka. Ovo unapređenje značajno ubrzava postavljanje aplikacije, jer se automatski generiše SQLite fajl i izvršavaju početne migracije baze kada kreirate novi projekat pomoću komande composer create-project. Ne morate da se bavite dodatnim podešavanjima za bazu, kao ni instaliranjem MySQL ili drugih DBMS-ova. Ovo je idealno za manje projekte, razvojne faze i prototipove, gde se su vam najvažniji jednostavnost i brzina postavljanja.

Ukinuta podrška za PHP 8.1

Laravel 11 zahteva PHP 8.2 kao minimalnu verziju, čime se ukida podrška za PHP 8.1. Ovo omogućava aplikaciji da koristi savremene funkcionalnosti PHP 8.2, kao što su nove funkcije i poboljšanja u performansama i bezbednosti. PHP 8.2 donosi dodatnu stabilnost i mogućnosti koje Laravel koristi kako bi obezbedio efikasniji rad aplikacija. Ovo takođe znači da stariji kod morate da ažurirate pre migracije na Laravel 11, kako bi ste obezbedili kompatibilnost sa PHP 8.2.

Laravel Reverb – real-time komunikacija

Laravel Reverb omogućava WebSocket komunikaciju unutar Laravel aplikacija, omogućavajući na taj način brzi prenos podataka u realnom vremenu. Ovo je veoma korisno za aplikacije koje se oslanjaju na instant komunikaciju, poput četa, notifikacija i praćenja podataka uživo. Reverb se lako integriše sa Laravel Echo-om, a za skalabilnost koristi Redis, što omogućava distribuiranje WebSocket saobraćaja na više servera.

Primer komande za pokretanje Reverb-a:

php artisan reverb:start

Ovo omogućava aplikaciji da podrži veliki broj korisnika i zahteva

Ograničavanje zahteva po sekundi (Rate Limiting)

Nova mogućnost ograničavanja zahteva po sekundi pruža precizniju kontrolu nad učestalošću zahteva prema aplikaciji. Do sada, ograničavanje je bilo moguće samo po minutu, ali sada možete definisati ograničenja u manjim vremenskim intervalima. Ova funkcionalnost pomaže u zaštiti servera od preopterećenja, kao i sprečavanju DDoS napada.

Primer implementacije ograničenja po sekundi:

RateLimiter::for('invoices', function (Request $request) {
return Limit::perSecond(1);
});

Ovim se osigurava da korisnici ne mogu previše opteretiti server u kratkom vremenskom periodu.

Testiranje interakcija sa redom (Queue Interaction Testing)

U Laravelu 11, testiranje redova je pojednostavljeno uz uvođenje metode withFakeQueueInteractions. Pomoću ove metode možete lako proveriti različite interakcije sa redom, kao što su odlaganje, neuspeh ili brisanje zadataka. Ovaj pristup štedi vreme prilikom pisanja testova i smanjuje potrebu za definisanjem prilagođenih simulacija (fakes) i stubova.

Primer testiranja odlaganja zadatka:

it('may release a job with a delay', function () {
$job = (new ProcessPodcast)->withFakeQueueInteractions();
$job->handle();
$job->assertReleased(delay: 30);
});

Ovim pristupom, možete direktno proveriti status zadatka, čime se pojednostavljuje razvoj i testiranje aplikacija koje koriste redove zadataka.

Minimalistički kostur aplikacije

Laravel 11 donosi pojednostavljenu strukturu projekta sa manje početnih fajlova i manje „boilerplate“ koda. Cilj ovog pristupa je da projekat bude što jednostavniji, sa manje redundantnih fajlova i manje potrebnog održavanja. Neka od ovih unapređenja su:

  • Uklonjene $policies iz AuthServiceProvider jer se sada automatski otkrivaju.
  • BroadcastServiceProvider više nije potreban jer se rutiranje za kanale sada automatski učitava.
  • Middleware Authenticate je pojednostavljen, eliminišući nepotrebne provere.
  • Različiti pomoćni middleware, poput EncryptCookies i TrustProxies, su uklonjeni iz osnovne strukture projekta.

Ove promene vam omogućavaju da započnete sa čistijim i jednostavnijim projektom, čime ujedno smanjujete potrebu za konfigurisanjem i održavanjem nepotrebnih fajlova.

Dumpable trait

Laravel 11 uvodi Dumpable trait, omogućavajući debagovanje objekata korišćenjem dump() i dd() metoda direktno unutar objekata. Ovaj trait je koristan za brže i jednostavnije debagovanje tokom razvoja.

Primer korišćenja Dumpable trait-a:

use Illuminate\Support\Traits\Dumpable; 

class Address { 
use Dumpable; 
// ... 
} 

$address->foo()->dd()->bar();

Ovaj pristup omogućava jednostavno ispitivanje vrednosti tokom različitih faza izvršavanja koda.

casts() metoda u modelu

Laravel 11 omogućava da se casting atributa definiše metodom casts() umesto kao $casts svojstvo. Ovo omogućava veću fleksibilnost u radu sa kastovanjem i omogućava dodatne mogućnosti, kao što je korišćenje statičkih metoda direktno iz kast klasa.

Primer definisanja castinga kao metode:

class User extends Model
{
protected function casts(): array
{
return [
'foo' => AsCollection::using(FooCollection::class),
];
}
}

Ovo omogućava precizniju kontrolu nad procesom kastovanja atributa u modelu.

Promene u konfiguraciji

Laravel 11 uvodi promene u konfiguraciji koje čine proces jednostavnijim i preglednijim. Korišćenjem komande config:publish, programeri mogu izabrati koje fajlove žele da konfigurišu i personalizuju.

Primer korišćenja config:publish komande:

php artisan config:publish database

Ovo omogućava selektivno prilagođavanje konfiguracija i čini aplikaciju lakšom za održavanje i podešavanje.

once Metod

Novi once metod u Laravelu 11 omogućava pozivanje vrednosti samo jednom, što je korisno kada želite da izbegnete višestruke pozive iste metode ili funkcije. Ovaj metod doprinosi optimizaciji performansi i smanjuje redundanciju u kodu.

Smanjene standardne migracije

Prethodne standardne migracije iz 2014. i 2019. godine sada su konsolidovane u dva fajla, čime se pojednostavljuje struktura fajlova i olakšava upravljanje migracijama. Ovo doprinosi čišćem direktorijumu database/migrations u novim projektima.

Uklonjen je Console kernel

Laravel 11 uklanja potrebu za zasebnim Console Kernel fajlom. Sve komande sada se definišu direktno u routes/console.php, što pojednostavljuje strukturu i omogućava jasnije i preglednije upravljanje komandama.

Primer definisanja komandi u routes/console.php:

return Application::configure()
->withProviders()
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php'
)
->withMiddleware(function(Middleware $middleware) {
$middleware->web(append: LaraconMiddleware::class);
});

Ovim se sve konzolne komande lako centralizuju na jedno mesto, čime se poboljšava organizacija projekta.

Kako instalirati Laravel 11?

Da biste instalirali Laravel 11, možete koristiti Laravel instaler ili Composer:

Koristeći Laravel instaler:

laravel new hello-world --dev

Koristeći Composer:

composer create-project --prefer-dist laravel/laravel hello-world dev-master

Ovi koraci automatski preuzimaju Laravel 11 direktno iz zvaničnog repozitorijuma i omogućavaju vam da započnete novi projekat sa svim najnovijim funkcionalnostima.

Zaključak

Laravel 11 donosi brojna unapređenja i pojednostavljuje razvoj vaših aplikacija, čineći aplikacije efikasnijim i prilagođenijim modernim zahtevima. Od podrazumevane podrške za SQLite, preko skalabilnog real-time Reverb sistema do novog Dumpable trait-a, Laravel 11 omogućava intuitivan i brži razvoj aplikacija. Sve ove promene čine Laravel još boljim alatom koji će vam pomoći da brže i jednostavnije razvijate vaše PHP aplikacije.

Slični postovi:

Bez komentara

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *