Laravel 9 est disponible !

Publié le 8 février 2022 par William Suppo
Couverture de l'article Laravel 9 est disponible !

Après une petite attente supplémentaire elle est là ! La version 9 de Laravel est dispo avec son lot de fonctionnalités à découvrir !

Pourquoi aujourd’hui ?

Petit rappel, l’équipe en charge du framework Laravel a décidé de décaler les livraisons des versions majeurs pour pouvoir intégrer les dernières nouveautés de Symfony qui sortent en automne.

C’est donc aujourd’hui qu’est enfin livrée la nouvelle version de Laravel !

Quelques nouveautés !

Première info: il est nécessaire de disposer de PHP 8.0 minimum pour faire fonctionner Laravel 9.x ! Et pour en profiter pleinement il est même conseillé de passer à PHP 8.1 (cf. enums)

Seconde info: C’est une version LTS, ce qui veut dire qu’elle va bénéficier d’une plus longue vie avec des corrections de bug jusqu’en février 2024 et des corrections de failles de sécurité jusqu’en février 2025.

Simplification de la définition des accesseurs/mutateurs

Avant Laravel 9, il était nécessaire de définir une méthode pour l’accesseur et une autre pour le mutateur d’une propriété d’un modèle, le tout avec les préfixe/suffixe qui vont bien :

1public function getNameAttribute($value)
2{
3 return strtoupper($value);
4}
5 
6public function setNameAttribute($value)
7{
8 $this->attributes['name'] = $value;
9}

Maintenant, une seule méthode suffit, cette dernière devant porter le nom de l’attribut affecté et retourner un objet de type Illuminate\Database\Eloquent\Casts\Attribute :

1use Illuminate\Database\Eloquent\Casts\Attribute;
2 
3public function name(): Attribute
4{
5 return new Attribute(
6 get: fn ($value) => strtoupper($value),
7 set: fn ($value) => $value,
8 );
9}

Cast des attributs d’un modèle à l’aide d’un Enum

Les Enum ont fait leur apparition avec PHP 8.1 et Laravel 9 en a trouvé une utilisation essentielle : Le cast des attributs ! Utile notamment quand on veut maîtriser la valeur d’une propriété comme une catégorie ou un statut.

Voici l’exemple de la doc officielle qui applique un cast ServerStatus sur le champ status de notre modèle :

1use App\Enums\ServerStatus;
2 
3/**
4 * The attributes that should be cast.
5 *
6 * @var array
7 */
8protected $casts = [
9 'status' => ServerStatus::class,
10];

Que l’on peut utiliser comme ceci lors de la mise à jour de notre modèle dans un contrôleur par exemple :

1if ($server->status == ServerStatus::provisioned) {
2 $server->status = ServerStatus::ready;
3 
4 $server->save();
5}

Comment mettre à jour notre application ?

La doc de Laravel est toujours très bien détaillée notamment pour le changement de version, il est donc fortement conseillé de se laisser guider.

Premièrement, lire entièrement la description de cette nouvelle version ! On y découvre d’avantage sur les nouveautés !

Ensuite, lire une première fois le guide de changement de version sans appliquer les modifications qui nous concernent, histoire d’avoir une vue la plus large possible sur ce qui nous attend.

On continue, en déroulant une seconde fois le guide et en appliquant les modifications dans notre code.

Enfin parce que la doc n’est pas complètement exhaustive et qu’on peut en découvrir d’avantage, on passe en revue le diff entre les deux versions majeures.

Bon courage à tous !

William Suppo avatar
William Suppo
Je mange du PHP au p'tit dej', et vous ?

A lire

Autres articles de la même catégorie