Laravel 12 – šta je novo?
Laravel 12 je objavljen krajem februara 2025. godine, pa iako ne donosi neke radikalne promene, uvodi niz korisnih unapređenja koja vaš svakodnevni rad čine lakšim i bržim.
Za razliku od prethodne verzije, Laravel 12 nudi čistije API-je, jednostavniju validaciju, brže keširanje i bolje alate za testiranje. Sve to bez narušavanja poznate strukture i načina rada na koji ste već navikli.
U ovom tekstu ćemo predstaviti neke od najvažnijih novina koje dolaze sa Laravelom 12.
Novi starter paketi
Laravel 12 dolazi sa unapređenim starter kit-ovima za React, Vue i Livewire. Svi oni koriste Tailwind CSS, Vite i automatski podešenu autentifikaciju preko AuthKit-a. To znači da već na početku imate funkcionalan login sistem sa podrškom za e-mail autentifikaciju, društvene mreže, SSO i passkey.
U praksi, ovo značajno skraćuje vreme podešavanja projekta, tako da odmah možete da se bacite na razvoj konkretnih funkcionalnosti.
nestedWhere() za jednostavnije upite
Nova metoda nestedWhere() koja dolazi sa Laravelom 12 pojednostavljuje pisanje složenih uslova u baznim upitima. Umesto da koristite closure funkcije, sada možete da ih grupišete direktno:
$products = DB::table('products')
->where('status', 'active')
->nestedWhere('price', '<', 1000, 'or', 'discount', '>', 20)
->get();
Na ovom konkretnom primeru dobijate čitljiviji upit koji vraća aktivne proizvode gde je cena ispod 1000 ili popust veći od 20%.
Kolekcije sa opsegom i korakom
Metoda range() sada prima i korak, pa možete jednostavno napraviti niz brojeva:
$numbers = collect()->range(0, 10, 2);
Rezultat je [0, 2, 4, 6, 8, 10]. Korisno za rad sa paginacijom ili kada vam trebaju brojevi u pravilnim razmacima.
Lakša validacija lozinki
Umesto da pišete pravila za kompleksnost lozinke, sada možete koristiti:
$request->secureValidate([
'password' => ['required', 'min:8', 'strong'],
]);
Laravel automatski proverava da li lozinka ima velika i mala slova, broj i specijalan znak. Ne morate da koristite regularne izraze ni dodatne pakete.
Keširanje u pozadini
Laravel 12 vam omogućava asinhrono keširanje korišćenjem redova zadataka:
Cache::store('redis')->remember('popular_posts', now()->addMinutes(10), function () {
return dispatch_sync(new GeneratePopularPostsCache());
});
Ova logika omogućava da se zahtevna obrada odradi u pozadini, dok korisnik dobije brz odgovor.
Redovi sa prioritetom
Redovi zadataka sada mogu da imaju prioritet. U queue.php fajlu definišete:
'queue' => ['high', 'default', 'low'],
A zadatak pozivate ovako:
SendImportantNotification::dispatch()->onQueue('high');
Tako najbitnije stvari idu prve, a manje važne čekaju.
Akcione klase za čistiji kod
Laravel 12 uvodi podršku za tzv. action classes kao zvaničan obrazac za organizaciju poslovne logike. Umesto da kompleksne operacije smeštate u kontrolere ili servise, sada možete da ih grupišete u posebne klase:
// app/Actions/SendWelcomeEmail.php
class SendWelcomeEmail
{
public function __invoke(User $user)
{
Mail::to($user->email)->send(new WelcomeMail($user));
}
}
Pozivanje izgleda ovako:
app(SendWelcomeEmail::class)($user);
Ovaj pristup podstiče čitljivost i bolju podelu odgovornosti u aplikaciji. Svaka akcija ima svoju klasu, što olakšava testiranje, održavanje i timski rad.
Lakše testiranje i debagovanje
Testovi su postali još direktniji:
$this->postJson('/api/login', $credentials)
->assertStatus(200)
->assertJsonStructure(['token', 'user']);
Dodate su i metode za proveru zaštite ruta, sadržaja baze i više informacija u logu tokom testa.
Lakše prebacivanje jezika i bolji API
Internacionalizacija sada radi direktno u runtime-u:
App::setLocale('de');
echo __('Welcome');
Laravel koristi odgovarajući prevod iz lang fajlova. Takođe je olakšano verzionisanje API-ja i podešavanje rate limita.
Zaključak
Kao što ste videli, Laravel 12 neće promeniti način na koji radite, ali vam omogućava da radite bolje. Sve je onako kako ste navikli, ali je sada unapređeno: manje ponavljanja, više automatizacije, brži razvoj i bolja organizacija koda.
Takođe, nema potrebe za dodatnim paketima za osnovne stvari, jer su već ugrađene. Ako ste do sada koristili Laravel, prelazak će vam biti lak. Ako tek počinjete da ga koristite, ovo je najbolji trenutak da krenete jer ćete odmah raditi po savremenim standardima i na lakši i jednostavniji način.
