Laravel 11

Marcus Olsson,

Som sig bör här på vårkanten så släpps en ny version av Laravel – nu är vi uppe i version 11! Dags att hugga tag i ändringarna och planera kommande uppdateringar.

Nyheter i Laravel 11

Största fokuset i Laravel 11 har handlat om att skala ner, förenkla och städa upp. Borta är filer som sällan behövs på mindre projekt så som t.ex. API- och channel routes (/routes/api.php och /routes/channels.php). Dessa kan dock fortfarande publiceras vid behov.

Service-providers har förenklats och numera sköts det mesta direkt i AppServiceProvider.php och /bootstrap/app.php.

Vidare så har de dåligt namngivna Console/Kernel.php och Http/Kernel.php helt plockats bort. Schemaläggning och annat som tidigare hanterades i Console/Kernel.php kan man nu göra direkt i routes/console.php genom nya Schedule-fasaden:

1use Illuminate\Support\Facades\Schedule;
2 
3Schedule::call(function () {
4 DB::table('recent_users')->delete();
5})->daily();
1use Illuminate\Support\Facades\Schedule;
2 
3Schedule::call(function () {
4 DB::table('recent_users')->delete();
5})->daily();

Middlewares och annat som man registrerade i Http/Kernel.php kan nu istället hanteras direkt i /bootstrap/app.php.

Dumpable

Många externa paket och delar av Laravel självt har sedan tidigare använt sig av ->dump() och ->dd()-metoder, men nu blir det en del av själva ramverket för att förenkla och standardisera metoden. Nu kan man även själv implementera den för sina egna klasser utan att behöva skriva en custom-lösning:

1use Illuminate\Support\Traits\Dumpable;
2 
3class Book
4{
5 use Dumpable
6 
7 // ...
8}
1use Illuminate\Support\Traits\Dumpable;
2 
3class Book
4{
5 use Dumpable
6 
7 // ...
8}

PHP 8.2

PHP 8.1 är ute – Laravel kräver nu PHP 8.2 som minimum.

2014_10_12_000000_create_users_table.php

Länge har de gamla migrations för users-, password_reset_tokens-, failed_jobs- och personal_access_tokens-tabellerna följt med. Vilkas namnkan har förvirrat en del nya utvecklare ("Varför har jag en migration ifrån 2014?") och sett allmänt störande ut (om man nu bryr sig om det).

Nu har har de tryckts ihop till färre filer med ett eget namngivningsformat (t.ex. 0001_01_01_000000_create_users_table.php). Alltid nåt.

Under utvecklingen var tanken att även inte inkludera config-filerna utan att man istället kunder publicera dem vid behov – något som ändrades i sista sekund. Jag själv skulle uppskatta den ändringen dock.

Som vanligt finns en bra upgrade guide tillgänglig på laravel.com – rekommenderas starkt. Vidare så har flera skrivit betydligt mer omfattande kring ändringarna än vad jag har möjlighet till. bl.a:

P.S. Såg i min tidslinje att det är ganska exakt 10 år sedan jag skrev det första inlägget här på bloggen om Laravel (nåväl, Laravel Forge och Homestead handlade inlägget egentligen om – verktyg som jag använder än idag). Tiden går galet fort!