L’équipe de développement de Laravel vient de publier la version 9 du framework PHP quelques mois après la sortie de Laravel 8. Laravel 9 poursuit les améliorations apportées dans Laravel 8.x en introduisant le support des composants Symfony 6.0, Symfony Mailer, Flysystem 3.0, une sortie route:list améliorée, un pilote de base de données Laravel Scout, une nouvelle syntaxe d'accesseur / mutateur Eloquent, des liaisons de route implicites via Enums, et une variété d'autres corrections de bogues et d'améliorations de la convivialité.Laravel et ses autres paquets suivent le système de versionnement sémantique. Les versions majeures du framework sont publiées chaque année dans les environs de février, tandis que les versions mineures et les correctifs peuvent être publiés aussi souvent que chaque semaine. Les versions mineures et les correctifs ne doivent jamais contenir de modifications de rupture.
Laravel est passé à des versions annuelles avec la sortie de Laravel 8. Auparavant, les versions majeures étaient publiées tous les 6 mois. Selon l’équipe de développement, cette transition a pour but d'alléger la charge de maintenance de la communauté et de mettre cette équipe de développement au défi de livrer de nouvelles fonctionnalités sans introduire de changements radicaux.
« Cet engagement à livrer de grandes nouvelles fonctionnalités au cours de la version actuelle conduira probablement à ce que les futures versions "majeures" soient principalement utilisées pour des tâches de maintenance telles que la mise à niveau des dépendances en amont, ce qui peut être vu dans ces notes de version », déclare l’équipe.
Lorsqu’on fait référence au framework Laravel ou à ses composants à partir de d’une application ou de d’un paquetage, il est recommandé de toujours utiliser une contrainte de version telle que ^9.0, car les versions majeures de Laravel contiennent des modifications de rupture. Voici, ci-dessous, les améliorations apportées par Laravel 9.0 :
Arguments nommés
Les arguments nommés ne sont pas couverts par les directives de rétrocompatibilité de Laravel. Pour l’équipe de développement, l'utilisation d'arguments nommés lors de l'appel de méthodes Laravel doit se faire avec prudence et en sachant que les noms des paramètres peuvent changer à l'avenir.
Politique de support
Pour les versions LTS, telles que Laravel 9, les corrections de bogues sont fournies pendant 2 ans et les corrections de sécurité sont fournies pendant 3 ans. Pour les versions générales, les corrections de bogues sont fournies pendant 18 mois et les corrections de sécurité sont fournies pendant 2 ans. Pour toutes les bibliothèques supplémentaires, y compris Lumen, seule la dernière version reçoit des corrections de bogues. Laravel 9.x requiert une version minimale de PHP de 8.0.
Amélioration des accesseurs / mutateurs éloquents
Laravel 9.x offre une nouvelle façon de définir les accesseurs et mutateurs Eloquent. Dans les versions précédentes de Laravel, la seule façon de définir les accesseurs et les mutateurs était de définir des méthodes préfixées sur le modèle comme suit :
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | public function getNameAttribute($value)
{
return strtoupper($value);
}
public function setNameAttribute($value)
{
$this->attributes['name'] = $value;
} |
Toutefois, dans Laravel 9.x, il est possible de définir un accesseur et un mutateur à l'aide d'une seule méthode non préfixée en indiquant un type de retour de Illuminate\Database\Eloquent\Casts\Attribute :
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | use Illuminate\Database\Eloquent\Casts\Attribute;
public function name(): Attribute
{
return new Attribute(
get: fn ($value) => strtoupper($value),
set: fn ($value) => $value,
);
} |
En outre, cette nouvelle approche de la définition des accesseurs mettra en cache les valeurs des objets renvoyés par l'attribut, tout comme les classes de cast personnalisées :
Casting d'attributs éloquent d'Enum
Eloquent permet maintenant de convertir les valeurs d'attributs en enums PHP. Pour ce faire, il est possible de spécifier l'attribut et l'enum souhaitez convertir dans le tableau de propriétés $casts du modèle :
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 | use App\Enums\ServerStatus;
/**
* The attributes that should be cast.
*
* @var array
*/
protected $casts = [
'status' => ServerStatus::class,
]; |
Une fois que vous avez défini le cast sur votre modèle, l'attribut spécifié sera automatiquement converti en un enum lorsque vous interagirez avec cet attribut :...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.