Berthold Feujo

Aperçu des changements de laravel 9

Présentation de laravel

Laravel est un framework web open-source écrit en PHP respectant l’architecture MVC (modèle-vue-contrôleur) et entièrement développé en programmation orientée objet. Laravel est distribué sous licence MIT, avec ses sources hébergées sur GitHub. La première version a été publiée le 15 juin 2011 et actuellement, nous sommes à la version 8.27. Ce framework connaît beaucoup de succès au point où une version 9 est déjà en vue.

Laravel v9 est la prochaine version LTS de Laravel, dont la sortie est prévue pour le 08 février 2022. Dans cet article, nous voulions décrire toutes les nouvelles fonctionnalités et modifications annoncées jusqu'à présent.

PHP 8 la version minimale dans Laravel 9

Étant donné que Laravel 9 nécessitera Symfony 6.0 et qu'il a une exigence minimale de PHP 8, cela signifie que Laravel 9 portera cette même restriction.

En effet, laravel 9 ne fonctionnera pas avec PHP 7 donc il faudra une mise à niveau vers la version 8 pour que ça fonctionne.

Nouvelle conception pour les itinéraires : liste

La commande routes:list est incluse dans Laravel depuis longtemps maintenant, et un problème qui se pose parfois est que si vous avez défini des itinéraires énormes et complexes, cela peut devenir désordonné en essayant de les afficher dans la console. Grâce à une demande de tirage de Nuno Maduro, cela est optimisé.

Nouvelle option de couverture de test

Une nouvelle option artisan test --coverage affichera la couverture du test directement sur le terminal. Il inclut également une option --min que vous pouvez utiliser pour indiquer le seuil minimum d'application pour la couverture de test.

Migrations de souches anonymes

Plus tôt cette année, Laravel 8.37 est sorti avec une nouvelle fonctionnalité appelée migrations anonymes qui empêche les collisions de noms de classe de migration.

 use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('people', function (Blueprint $table) {
$table->string('first_name')->nullable();
});
}
};

Au lancement de Laravel 9, ce sera la valeur par défaut lorsque vous exécuterez php artisan make:migration

Nouvelle interface du générateur de requêtes

Grâce à Chris Morrell, Laravel 9 comportera une nouvelle interface de création de requêtes, et vous pouvez voir ce PR fusionné pour tous les détails.

Pour les développeurs qui s'appuient sur des indications de type pour l'analyse statique, la refactorisation ou la complétion de code dans leur IDE, l'absence d'interface partagée ou d'héritage entre Query\Builder, Eloquent\Builderet Eloquent\Relationpeut être assez délicate :

return Model::query()
->whereNotExists(function($query) {
// $query is a Query\Builder
})
->whereHas('relation', function($query) {
// $query is an Eloquent\Builder
})
->with('relation', function($query) {
// $query is an Eloquent\Relation
});

Cette fonctionnalité ajoute une nouvelle interface Illuminate\Contracts\Database\QueryBuilder et un trait Illuminate\Database\Eloquent\Concerns\DecoratesQueryBuilder qui implémente l'interface à la place de l' implémentation __call existante.

Fonctions de chaîne PHP 8

Étant donné que PHP 8 sera le minimum, Tom Schlick a soumis un PR pour passer à l'utilisation de str_contains(), str_starts_with() et str_ends_with() fonctionne en interne dans la classe \Illuminate\Support\Str.

De SwiftMailer à Symfony Mailer

Symfony a déprécié SwiftMailer et Laravel 9 fait le changement pour utiliser Symfony Mailer pour tous les transports de courrier. Cela ouvre quelques changements de rupture et vous pouvez consulter le PR pour tous les détails. Le guide de mise à niveau de Laravel 9 comprendra des instructions une fois qu'il sera officiellement publié.

Le fichier server.php peut être supprimé

Une fonctionnalité mineure mais vous pouvez maintenant supprimer le fichier server.php de votre projet et il sera inclus dans le framework. Ce fichier est utilisé uniquement pour php artisan serve.

Et plus...

Laravel 9 est encore dans quelques jours, et d'autres nouvelles fonctionnalités et annonces seront publiées. Nous mettrons à jour ce message au fur et à mesure que ceux-ci seront annoncés.