time_read48mn de lecture

Laravel 10 : Nouveautés, dernières mises à jour et fonctionnalités

11 mars 2023

Laravel 10 : Nouveautés, dernières mises à jour et fonctionnalités

Laravel est sans doute un des frameworks les plus populaires en ligne pour la création d’applications web basées sur le langage de programmation PHP. Il fournit un environnement convivial et sécurisé pour les développeurs web. Mais surtout les utilisateurs de Laravel bénéficient d’une plateforme simplifiée pour créer leurs applications en un temps réduit. Ce framework est équipé des fonctionnalités telles que l‘injection de dépendances, la planification de tâches, la création de tests unitaires et une couche d’abstraction de base de données expressive…

Laravel 10 est la toute dernière version publiée du framework Laravel. L’équipe de développement Laravel a annoncé des nouvelles fonctionnalités, des mises à jour mais aussi des dépréciations. Continuez à lire cet article pendant que nous explorons les nouveautés apportées par Laravel 10 ainsi que les dépréciations. Ensuite, nous allons voir également comment vous pouvez procéder pour installer cette dernière version et évoluer votre projet sur Laravel 10.

Laravel 10 : tout ce que vous devez savoir sur les dernières nouveautés et les mises à jour

Avant de commencer, rappelons que la version 10 de Laravel a été publiée le 14 février 2023. Mais l’équipe développeur a annoncé que le framework continuera à recevoir des correctifs de bogues jusqu’au 6 août 2 024 et des correctifs de sécurité jusqu’au 4 février 2025.

Ensuite, voyons en détail les différentes mises à jour et les fonctionnalités apportées par Laravel 10.

1. Prise en charge de PHP 8.1 et 8.2

Comme vous le savez, Laravel est un framework utilisant le langage PHP. Pour que la version 10 fonctionne correctement, la version minimale requise de PHP est 8.1. Le framework prend également en charge la version 8.2 de PHP (publiée environ 2 mois avant la sortie de Laravel 10), pour assurer plus de performances et de sécurité.

Mais, parce que toutes les nouvelles versions de Laravel publiées sont mieux pensées pour assurer la rétrocompatibilité, vos applications créées avec les versions antérieures à Laravel 10 ne seront aucunement affectées.

Vous pouvez continuer à utiliser des propriétés readonly et array_is_list prises en charge dans les versions 8.1 et 8.2 de PHP.

Meilleur hébergement web à petit prix - Excellence Made in France

Saisissez l'opportunité avec LWS : hébergement web en promo à -50% ! Commencez à seulement 1,49€/mois plutôt que 2,99€. Profitez de performances solides 🚀 et d'un support client remarquable. 🌟

Découvrez les Avantages 🎁

Hébergement web au meilleur prix

2. Prise en charge de modification native des colonnes

Auparavant, vous devrez recourir à un paquet supplémentaire de type doctine/dbal (DBAL) si vous envisagez d’apporter des modifications aux colonnes, en utilisant MySQL, PostgreSQL ou encore SQL Server avec la méthode change().

Avec la sortie de Laravel 10, la tâche est beaucoup plus simplifiée pour les développeurs. En fait, vous n’avez plus besoin d’utiliser un paquet supplémentaire.

Voici un exemple :

$table->integer('user_balance')->unsigned()->default(0)->comment('balance'); // `user_balance` is an integer, unsigned, defaults to '0', and column comment is 'balance'

Dans l’exemple ci-dessus, pour modifier le type de la colonne user_balence, Laravel 10 vous permet d’écrire ce code avec une syntaxe plus simplifiée :

$table->bigInteger('user_balance')->change(); // This will change `user_balance` to bigInteger instead of just integer

3. Remplacement de DocBlocks par les déclarations de type natives

La plupart des frameworks utilisent les DocBlocks qui sont des commentaires formatés. Ces blocks permettent de documenter des segments de codes spécifiques dans votre projet. Cela rend l’implémentation facile de différents codes des applications qui sont créées. Cependant, l’arrivée de Laravel 10 a modifié cette donne.

Ainsi, si vous devez normalement écrire le code ci-dessous avant Laravel 10 :

/**
* Determine whether the user can create models.
*
* @param {{ namespacedUserModel }} $user
* @return IlluminateAuthAccessResponse|bool
*/

public function create({{ user }} $user)
{
  //
}

Ce code est maintenant simplifié de la manière ci-dessous avec Laravel 10 :

/**
* Determine whether the user can create models.
*/

public function create({{ user }} $user): bool
{
  //
}

Le tout est pensé pour rendre développement web en PHP beaucoup plus flexible et rapide.

4. Mise à jour des différents paquets utilisés dans Laravel

Pour assurer la meilleure compatibilité et probablement prévenir les vulnérabilités de sécurité de l’environnement de travail, la plupart de paquets utilisés dans Laravel ont été également mis à jour pour fonctionner avec Laravel 10.

Ce sont notamment :

  • Jetstream utilisé dans Laravel pour implémenter les fonctionnalités de connexion, d’inscription, gestion de sessions, authentification à deux facteurs, vérification des e-mails et aux applications qui sont conçues, etc.
  • Stripe Cashier : qui fournit une interface aux applications qui souhaitent intégrer des services d’abonnement par Stripe tels que la gestion de coupons, la création de factures ou encore l’échange d’abonnement.
  • Horizon : pour surveiller facilement les métriques clés de votre système de file d’attente, telles que le débit des tâches, la durée d’exécution et les échecs des tâches.
  • Passeport : pour implémenter un serveur de type OAuth2 pour votre application Laravel en quelques minutes.
  • Dusk : qui fournit une API d’automatisation et de test de navigateur expressive facile à utiliser.

Mais des nombreux autres paquets sont également mis à jour tel que Breeze, Pint, Valet et Scout…

Besoin d'un hébergement cPanel au meilleur prix ?

LWS vous conseille sa formule d’hébergement cPanel en promotion à -40% (offre à partir de 2,99€ par mois au lieu de 4,99 €). Non seulement les performances sont au rendez-vous mais vous profitez en plus d’un support exceptionnel.

Découvrir l'offre

Hébergement cPanel au meilleur prix

5. Mise à jour de Predis

Predis est un client Redis entièrement écrit en PHP. Redis est en fait utilisé sur Laravel comme un serveur de structure de données. Tout simplement, il se place comme une base de données pour stocker temporairement les données de votre application. Cela ressemble à un service de mise en cache de données.

Vous devez noter que dans Laravel 10, vous pouvez utiliser uniquement la version 2 de Predis. Le support pour la version 1 a été retiré.

6. Les règles de validation sont invocables par défaut

Les utilisateurs de Laravel 9 doivent ajouter le controller --invokable après la commande Artisan pour rendre une règle de validation invocable. Avec la sortie de Laravel 10, vous n’avez plus besoin de faire appel à ce drapeau.

Tout simplement, l’équipe centrale de Laravel a rendu toutes les règles de validation invocables par défaut. Et donc, un gain de temps pour les développeurs adeptes à ce framework PHP. Ainsi, vous pouvez créer une règle de validation rien qu’en écrivant le code ci-dessous :

php artisan make:rule CustomRule

7. La gestion améliorée des erreurs

Laravel a également amélioré la façon de gérer les erreurs au cours du développement de vos projets. Les développeurs peuvent avoir accès à un journal, qui retrace les erreurs de codages dans l’architecture de votre application. Mais, vous pouvez aussi configurer l’envoie des notifications par mail, pour toutes les erreurs critiques.

C’est un changement remarquable qui permet aux utilisateurs Laravel, de prendre de l’avance sur la gestion des erreurs de codage et surtout accélérer la mise en place de projets.

8. Prise en charge de xxHash

Laravel 10 prend en charge xxHash qui est une méthode de hachage extrêmement rapide. Cet algorithme de hachage fonctionne en tenant compte de la limite de la vitesse de votre mémoire RAM.

xxHash est utilisé pour compléter les tests SMHasher afin de permettre aux développeurs d’examiner et de réduire les collisions, assurer les caractères de dispersion ou la fonction aléatoire pour le hachage dans le code des applications. Cependant, malgré ce changement, il faut noter que certains paquets peuvent toujours contenir les noms de fichiers écrits au format de hachage SHA-1 (Secure Hash Algorithm – 1). Le hachage SHA était le modèle de hachage utilisé auparavant par Laravel.

En tant que développeur, il est judicieux de prendre en compte ce point lors du développement de votre projet ou lors de sa mise à niveau vers Laravel 10.

L’algorithme xxHash semble être plus performant que la méthode cryptographique SHA utilisée auparavant par Laravel. C’est donc plus sécurisé et extrêmement rapide.

9. Le paramètre $path facultatif pour plusieurs méthodes

Une autre nouveauté dans Laravel 10 est que le paramètre$path est désormais utilisé de manière facultative pour un certain nombre de méthodes. Ce sont notamment les méthodes :

  • UploadedFile#storePublicly
  • UploadedFile#storePubliclyAs
  • UploadedFile#storeAs
  • FilesystemAdapter#putFileAs
  • FilesystemAdapter#putFile
  • UploadedFile#store

Ainsi, par exemple, si vous envisagez de télécharger un fichier (image, photo, audio…) sur la plateforme Amazon S3, vous deviez faire ceci :

Storage::disk('s3')->putFile(‘post/images', $uploadedFile);

Dans Laravel 10, vous pouvez simplement utiliser la ligne de code ci-dessous pour exécuter la même tâche :

Storage::disk(Disk::PostImages)->putFile($uploadedFile)

10. whereExists() Support de la méthode pour Eloquent Builder

Dans les versions inférieures à Laravel 10, les développeurs doivent paramétrer une requête imbriquée à l’aide d’une fermeture lorsqu’il faut utiliser la méthode  whereExists(). Mais dans la version 10, il faut noter que les utilisateurs peuvent simplement inclure un Eloquent Builder comme requête imbriquée.

Et donc, au lieu d’écrire le code suivant :

Order::whereExists(function ($query) {
  $query->from('products')->whereColumn('products.order_id', 'orders.id');
});

Laravel 10 vous permet d’utiliser plutôt ceci :

Order::whereExists(
  Product::whereColumn('products.order_id', 'orders.id')
);

11. Création de classes réutilisables dans Laravel 10

Une autre nouveauté qui facilite la vie aux utilisateurs de Laravel 10 lorsqu’il faut travailler sur plusieurs bases de données est la possibilité de créer des classes réutilisables.

Par exemple, vous envisagez de travailler avec MySQL et PostgreSQL et que vous souhaitez retourner une première valeur non nulle d’une liste en tant qu’alias. Dans les versions inférieures à Laravel 10, vous devez utiliser le code ci-dessous :

DB::table(‘visitors')
->when(isPostgreSQL(), fn ($query) => $query->select(DB::raw('coalesce(NULL, "user", "guest") AS "First Visitor"')))
->when(isMySQL(), fn ($query) => $query->select(DB::raw('coalesce(NULL, `user`, `guest`) AS `First Visitor`')))

Dans ce code, la première valeur non nulle qui sera retournée est “First visitor” en utilisant la fonction coalesce (). Tout le problème, c’est que si vous envisagez de répéter cette opération, vous êtes obligé à chaque fois d’écrire le même code brut pour toutes les bases de données que vous utilisez. Cela peut prendre du temps si vous devez retourner beaucoup de valeurs.

Besoin d'un serveur privé virtuel VPS sécurisé ?

LWS vous conseille sa formule d’hébergement sur VPS en promotion à -75% (offre à partir de 4,99€ par mois au lieu de 19,99 €). Non seulement les performances sont au rendez-vous mais vous profitez en plus d’un support exceptionnel.

Découvrir l'offre

Serveur privé virtuel sécurisé

Heureusement, avec Laravel 10, la création de classes réutilisables a amélioré le travail. En fait, une fois que vous générez une classe d’expression réutilisable, vous n’aurez aucunement besoin de saisir à nouveau le code brut pour exécuter des requêtes et afficher les valeurs dans les autres bases de données sur lesquelles vous travaillez.

Pour procéder avec la nouvelle fonctionnalité, vous devez créer deux classes. Une, concerne la fonction coalesce() et la deuxième vous permet d’implémenter votre alias. La structure de code à utiliser ressemble à celle-ci :

class Alias implements Expression
{
  public function __construct(
    public readonly Expression|string $expression,
    public readonly string $name,
  ) { }
  public function getValue(Grammar $grammar): string
  {
    return match ($grammar->isExpression($this->expression)) {
      true => "{$grammar->getValue($this->expression)} as {$grammar->wrap($this->name)}",
      false => $grammar->wrap("{$this->name} as {$this->name}"),
    };
  }
}
class Coalesce implements Expression
{
  public function __construct(
    public readonly array $expressions,
  ) { }
  public function getValue(Grammar $grammar): string
  {
    $expressions = array_map(function ($expression) use($grammar): string {
      return match ($grammar->isExpression($expression)) {
        true => $grammar->getValue($expression),
        false => $grammar->wrap($expression),
      };
    }, $this->expressions);
    $expressions = implode(', ', $expressions);
    return "coalesce({$expressions})";

Une fois que les deux classes sont créées, vous pouvez afficher les valeurs dans plusieurs bases de données sur lesquelles vous travaillez en exécutant le code ci-après :

DB::table('visitors') ->select(new Alias(new Coalesce([NULL, 'user', 'guest']), 'First Visitor'));

12. Prise en charge de PHPUnit 10

PHPUnit est une instance open source de l’architecture xUnit pour les frameworks de tests unitaires fonctionnant avec le langage de programmation PHP. Sur Laravel 10, vous pouvez utiliser PHPUnit 10 mais aussi la version 8 et 9 si vous remarquez quelques incompatibilités.

13. Laravel Process Interaction

Un autre changement majeur concerne Laravel Process. En effet, les développeurs peuvent exécuter rapidement et facilement des tests et des commandes CLI dans la nouvelle version. Finalement, la fonctionnalité vous permettra de construire et tester des nouveaux processus d’une manière assez soignée comme dans cet exemple donné par Taylor, le chef en-tête de l’équipe Laravel :

use IlluminateSupportFacadesProcess;
$result = Process::run('ls -la');
$result->successful();
$result->failed();
$result->exitCode();
$result->output();
$result->errorOutput();
$result->throw();
$result->throwIf(condition);

Cela a rendu le code simplifié et soigné. La construction d’un nouveau processus peut faire appel à la nouvelle fonctionnalité suivante :

$result = Process::timeout(60)->path(base_path())->env([...])->run('ls -la');

$result = Process::forever()->run('ls -la');

Vous pouvez par exemple créer un faux processus et le tester en utilisant cette nouvelle fonctionnalité. Ainsi, vous pouvez écrire le code suivant pour votre processus :

Process::fake([
  'ls *' => Process::result('Hello From LWS Team'),
]);

Ensuite, vous pouvez tester votre processus avec les différentes assertions créées à cet effet avec un code similaire à celui-ci

$result = Process::run('ls -la');
Process::assertRan(function ($process, $result) {
  return $process->command == 'ls -la';
});
Process::assertRanTimes(function ($process, $result) {
  return $process->command == 'ls -la';
}, times: 1);
Process::assertNotRan(function ($process, $result) {
  return $process->command == 'cat foo';
});

14. Fanion Laravel

Laravel 10 intègre des fanions qui permettent aux développeurs PHP de travailler sur les nouvelles fonctionnalités de leurs applications. Laravel Pennant fournit une instance facile à utiliser pour conserver les drapeaux de nouvelles fonctionnalités. Cette fonctionnalité est également utile lorsque vous travaillez sur la mise à jour des fonctionnalités existantes.

Laravel Pennant inclut dans Laravel 10, devrait vous permettre de gérer un nombre important de drapeaux dans votre projet.

Vous pouvez ainsi utiliser le code ci-dessous pour ajouter une nouvelle fonctionnalité :

use LaravelPennantFeature;
use IlluminateSupportLottery;
Feature::define('new-color-button, function () {
return Lottery::odds(1, 10);
});

Et pour vous assurer que l’utilisateur a accès à la nouvelle fonctionnalité créée, vous pouvez utiliser le code ci-après :

use LaravelPennantFeature;
if (Feature::active('new-color-button)) {
  // ...
}

15. La propriété $routeMiddleware changée

Dans Laravel 10, la propriété $routeMiddleware pour la classe App\Http\Kernel a été renommée en $middlewareAliases pour toutes les nouvelles applications. Selon l’équipe centrale de Laravel, ce changement intervient uniquement pour mieux refléter l’objectif de cette propriété. Une mise à jour qui rend encore le framework Laravel plus convivial à utiliser.

L’équipe recommande par ailleurs de renommer cette propriété selon la nouvelle appellation sans aucune obligation aux développeurs.

16. Réécriture de la prise en charge des balises de cache

Dans les versions inférieures à Laravel 10, les balises de cache obsolètes s’accumulaient dans le cache lors de l’utilisation de Redis comme pilote de cache de votre application. Pour résoudre ce problème qui pourrait nuire aux performances et l’efficacité de stockage de l’application, la prise en charge des balises de cache a été réécrite.

Toutefois, il faut noter que les développeurs peuvent éliminer correctement les entrées de balises de cache obsolètes en utilisant la nouvelle commande Artisan cache:prune-stale-tags.

Cette dernière doit être planifiée dans la classe App\Console\Kernel de votre application comme ceci :

$schedule->command('cache:prune-stale-tags')->hourly();

17. La commande Artisan lang:publish pour la publication des applications

À partir de la version 10 de Laravel, les développeurs doivent utiliser la commande Artisan lang:publish pour publier les applications au lieu du répertoire lang par défaut. La commande que vous devez utiliser ressemble à celle-ci :

php artisan lang:publish

Quelques dépréciations dans Laravel 10

En dehors de nouvelles fonctionnalités et des mises à jour, le framework Laravel s’est vu déprécié de quelques autres fonctionnalités dans la version 10. Il y a donc des méthodes qui ont été supprimées et d’autres fonctionnalités retirées.

Voyons les dépréciations majeures dans Laravel 10.

Suppression de la méthode Redirect::home

La méthode de redirection Redirect::home a été déclarée obsolète et supprimé. En conséquence, votre application doit rediriger vers une route explicitement nommée. En voici un exemple pour illustrer ce changement :

return Redirect::route('home');

Suppression de la méthode Bus::dispatchNow

Dans Laravel 10, les méthodes dispatch_now et Bus::dispatchNow ont été également déclarées obsolètes et supprimées. Elles sont désormais remplacées respectivement par les nouvelles méthodes dispatch_sync et Bus::dispatchSync.

Suppression de la propriété $dates du modèle éloquent

Laravel supprime la propriété $dates dans la version 10 et le remplace par la propriété $casts.La nouvelle structure de la syntaxe à utiliser ressemblera donc à celle-ci :

protected $casts = [
    'deployed_at' => 'datetime',
];

Dépréciation du trait MocksApplicationServices

Dans Laravel 10, le trait MocksApplicationServices a été également déclaré obsolète et supprimé. Ce trait avait servi pour les méthodes de test expectsEvents, expectsJobset expectsNotifications. Si votre application en utilise, il est recommandé de passer ces méthodes respectivement à Event::fake, Bus::fake et Notification::fake.

Vous avez d’autres dépréciations en rapport avec les différentes méthodes, les classes et les propriétés des applications :

  • La méthode Mail::failures du mail fake
  • La classe MaintenanceModeException
  • La méthode getBaseQuery
  • La méthode assertTimesSent()

Comment mettre à niveau un projet existant vers Laravel 10 ?

Si vous avez des projets existants et que vous souhaitez évoluer vers Laravel 10, vous devez noter qu’il y a certaines exigences à prendre en compte. L’équipe centrale mise sur la rétrocompatibilité de codes afin de ne pas affecter les applications précédemment créées. Cependant, vous devez toujours prendre en compte les nouvelles fonctionnalités ajoutées et ajuster votre code en retirant les fonctions et les classes ou les méthodes qui ont été dépréciées.

Pour aider les développeurs, un guide étape par étape est disponible sur le site officiel pour savoir comment vous devez procéder. Ce récit détaille également les ruptures possibles qui pourront affecter votre projet au cours de la mise à niveau.

Pour prévenir des ruptures et mettre facilement à niveau vos applications, vous pouvez utiliser Laravel Shift. Cet outil automatise le processus et vous permet de gagner du temps lors de la mise à niveau de dépendances et toutes les autres composantes nécessaires.

Comment installer Laravel 10 ?

Minimum requis pour Lavarel

Avant d’envisager de déployer Laravel 10 sur un environnement de développement web, vous devez toujours vous assurez-vous que toutes les conditions requises sont réunies. Votre serveur devrait avoir la configuration suivante :

  • Une version de PHP ≥ 8.2. Nous l’avons mentionné précédemment, Laravel 10 peut prendre également en compte PHP 8.1. Cependant, nous vous conseillons de déployer déjà PHP 8.2 ou une version supérieure pour toutes les nouvelles applications.

Ensuite, vous devez disposer des extensions PHP ci-dessous :

  • Extension PHP OpenSSL
  • Extension PHP PCRE
  • Extension PHP PDO
  • Extension PHP Tokenizer
  • Extension PHP XML
  • Extension PHP Filter
  • Extension PHP Hash
  • Extension PHP Session
  • Extension PHP Ctype
  • Extension PHP cURL
  • Extension DOM PHP
  • Extension PHP Fileinfo
  • Extension PHP Mbstring

Ces exigences sont quelque peu similaires à la configuration requise pour Laravel 9. Et comme pour toutes les autres versions antérieures, la version 10 du framework peut être déployée aussi sur différents environnements de développement web. Vous pouvez l’installer sur Windows ou macOS en utilisant Composer.

Installer Laravel 10 sur un hébergement LWS

Trucs et astuces


Chez LWS, vous pouvez installer Laravel 10 si vous disposez d’un hébergement PHP : hébergement web mutualisé, hébergement cPanel, serveur VPS cPanel, serveur VPS ISPConfig.

Sur nos formules cPanel, vous pouvez installer Laravel 10 quel que soit le plan que vous avez choisi. Pour installer facilement et rapidement ce framework PHP, vous pouvez utiliser nos outils d’installation automatique.

Sur les formules Linux standards, vous pouvez utiliser l’auto-installeur LWS Panel ou Softaculous sur toutes les formules cPanel. C’est plus rapide et moins exigeant techniquement.

Par exemple, pour une formule Linux standard, LWS Starter, connectez-vous à votre compte d’hébergement et ouvrez l’outil « Auto-installeur ».Auto-installeur LWSDans l’interface résultante, défilez la liste des applications et sélectionnez Laravel parmi les frameworks PHP présentés. L’installation ne prendra que quelques minutes.Laravel 10 Sur les formules cPanel, utilisez Softacoulous et recherchez Laravel parmi les différents frameworks présentés.

Conclusion

Bravo pour avoir lu cet article jusqu’à la fin, Laravel 10 est maintenant disponible ! 😁 Il apporte des nouvelles fonctionnalités, des mises à jour et des dépréciations. Nous avons parcouru dans cet article ces différents changements apportés à Laravel 10, le framework PHP probablement le plus populaire. Si vous avez un projet existant, nous avons parlé aussi de la façon de procéder pour évoluer vers Laravel 10. Nous avons également détaillé le processus pour exécuter une nouvelle installation Laravel 10. À présent, vous savez ce qui vous reste à faire !

Si vous avez des ajouts ou des suggestions ou encore des questions sur la façon de déployer un projet Laravel 10 sur nos serveurs, n’hésitez pas à nous écrire en utilisant la section Commentaires.

Hébergement WordPress à prix accessible - L'Excellence Made in France

Profitez de l'offre exclusive de LWS : hébergement WordPress en France à -40% ! Démarrez dès maintenant à partir de 2,99€/mois au lieu de 4,99€. Performance 🚀 et support exceptionnel garantis ! 😊

Voir les Offres Spéciales WordPress 🎯

Hébergement WordPress
Avatar de l'auteur

Auteur de l'article

Joseph

Je suis Joseph, expert en hébergement web et noms de domaine chez LWS 🌐. J'adore partager mes astuces et mon expérience pour vous aider à briller sur le web ! Suivez-moi pour des conseils pratiques et fun 😊.

Il y a 414 jours

note article

4.9/5 (222 votes)

Commentaires (0)
Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

White Book for other Category

Hébergement Web LWS - 3 mois offerts

Hébergement Web Starter LWS GRATUIT pendant 3 mois ! 🚀

Cette offre exclusive comprend tout ce dont vous avez besoin pour créer votre site web GRATUITEMENT : Hébergement 250Go SSD, 5 sites webs hébergeables, WordPress et autres CMS en 1 clic, support réactif 7J/7, serveurs en France...