L’inizio del nuovo anno porta con se tante novità: lasciare l’ anno appena passato alle spalle, l’iscrizione in palestra (sperando nel miracolo!), tagliare i ponti con tutte quelle persone che riteniamo tossiche e, dulcis in fundo, la nuova versione di Laravel: Laravel 10.
Quando esce Laravel 10?
Laravel 10, il successore di Laravel 9, uscirà il 7 febbraio 2023.
Se ti interessa conoscere la Roadmap completa, eccoti servito:
- Laravel 9: 8 febbraio 2022
- Laravel 10: 7 febbraio 2023
- Laravel 11: 6 febbraio 2024
Ovviamente il rilascio di Laravel 10 non renderà obsolete le precedenti versioni, avrai modo e tempo per allinearti con il ciclo di vita di Laravel.
Da quando il team Laravel ha adottato la cadenza annuale di rilascio per le versioni principali (9.x, 10.x, 11.x …), ci saranno sempre 2 anni di aggiornamenti assicurati!
Per i piú pignoli, eccovi una tabella riassuntiva presa direttamente dal Support Policy Ufficiale:
Versione | PHP (*) | Data di Rilascio | Bug Fixes | Security Fixes |
---|---|---|---|---|
8 | 7.3 - 8.1 | September 8th, 2020 | July 26th, 2022 | January 24th, 2023 |
9 | 8.0 - 8.1 | February 8th, 2022 | August 8th, 2023 | February 6th, 2024 |
10 | 8.1 | February 7th, 2023 | August 6th, 2024 | February 4th, 2025 |
11 | 8.2 | February 6th, 2024 | August 5th, 2025 | February 3rd, 2026 |
Quali sono le novità di Laravel 10?
Come ogni versione “Principale”, ci sono delle novità più o meno impattanti sull’ intero ecosistema.
Eccoti un elenco dettagliato delle novità:
PHP 8.1 come requisito minimo per Laravel 10
Dalla versione 10 di Laravel diventerà obbligatorio avere almeno la versione 8.1 di PHP.
La versione 8.0 di PHP rilasciata il 26 novembre 2020 viene definitivamente abbandonata.
Prosegue cosi spedita la corsa di tutto il Core Team Laravel che da sempre obbliga gli sviluppatori ad aggiornare periodicamente i server con le nuove versioni PHP per sfruttare appieno tutte le patch di sicurezza e le ottimizzazioni lato performance che il core team PHP rilascia.
Nativamente implementate le Type declarations
Con Laravel 10 saranno nativamente pre-configurati le type declarations in tutto il codice.
/** * @param \App\Models\User $user * @return void */-public function created($user) +public function created(User $user): void
Il processo di tipizzazione iniziato con PHP 7 arriva ufficalmente anche su tutto il codice ufficiale di Laravel. Guarda su Github
Le regole di validazione diventano Invokable di default
In Laravel 10, quando lancerete il comando Artisan:
php artisan make:rules MiaRegolaPersonale
Verrà generata immediatamente una classe che implementerà InvokableRule invece di Rule:
-class MiaRegolaPersonale implements Rule +class MiaRegolaPersonale implements InvokableRule {- public function __construct()- {- //- }- /** * Run the validation rule. * * @param \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString $fail */+ public function __invoke(string $attribute, mixed $value, Closure $fail): void+ {+ //+ }+}
I comandi Artisan disponibili con Laravel 9.x:
-php artisan make:rule Lowercase -php artisan make:rule Lowercase --invokable -php artisan make:rule Lowercase --invokable --implicit
Con Laravel 10.x, invece, diventeranno molto più eloquenti e quindi avremo:
php artisan make:rule Lowercasephp artisan make:rule Lowercase --implicit
Migration di modifica senza doctrine/dbal
In laravel 10 è stato aggiunto il supporto nativo alla modifica delle colonne tramite Migration ed è stato rimosso l’obbligo di avere doctrine/dbal tra le dipendenze installate.
Immaginiamo di avere una colonna chiamata record di tipo unsigned, con valore di default 1 e un commento:
$table->integer('record')->unsigned()->default(1)->comment('Colonna record');
Per mantenere tutte le proprietà ma modificare solo il tipo, occorrerà definire:
$table->bigInteger('record')->unsigned()->default(1)->comment('Colonna record')->change();
Nell’operazione è richiesta una dichiarazione esplicita, cambiare solo il tipo automaticamente ci farà perdere le proprietà definite all’inizio:
$table->bigInteger('record')->change(); // Perderemo unsigned,default e comment
Metodi Deprecati
E infine ecco una lista di tutti i metodi Deprecati che non saranno più disponibili in laravel 10