Plus de dix ans après l’introduction du framework Laravel, très populaire, vous êtes-vous déjà demandé : « Que peut encore offrir Laravel aux développeurs PHP ? »

Étant donné à quel point il a déjà simplifié le développement PHP pour les développeurs débutants et professionnels, certains pourraient même affirmer qu’il a gâté les développeurs en leur faisant croire que PHP est le langage de programmation le plus facile qui soit.

Alors, Laravel a-t-il encore d’autres surprises en réserve pour les développeurs Laravel? Ou a-t-il épuisé tous les moyens possibles pour soutenir les développeurs PHP ?

En tout cas, nous savons que Laravel 10 a beaucoup à offrir. C’est ce que nous allons découvrir dans cet article en vous emmenant à la découverte des nouvelles fonctionnalités, des correctifs et des méthodes et paquets fraichement dépréciés de Laravel 10.

Calendrier de sortie de Laravel

L’équipe centrale de Laravel avait l’habitude de publier deux versions majeures par an (une tous les six mois).

Cependant, le cycle de publication a été modifié lorsque Taylor Otwell, le créateur de Laravel, a annoncé qu’une seule version majeure serait désormais publiée chaque année. Cela a permis à l’équipe centrale et à la communauté de consacrer plus de temps et d’efforts à une version spécifique du framework et d’introduire de nouvelles fonctionnalités puissantes sans effectuer de changements radicaux.

La sortie de Laravel 10 était prévue pour le 7 février 2023, après la sortie de Laravel 9 le 8 février 2022. Cependant, l’équipe a eu besoin de plus de temps pour finaliser son œuvre, et Laravel 10 a finalement été publié le 14 février 2023.

La publication de Laravel 11 est maintenant prévue pour le premier trimestre de février 2024.

En outre, selon la politique de support, les corrections de bogues sont offertes pendant 18 mois et les mises à jour de sécurité pendant deux ans pour toutes les versions de Laravel.

Voici le calendrier prévu pour les corrections de bugs et les mises à jour de sécurité :

  • Laravel 9 continuera à recevoir des corrections de bugs jusqu’au 8 août 2023 et des corrections de sécurité jusqu’au 6 février 2024.
  • Laravel 10 bénéficiera de corrections de bugs jusqu’au 6 août 2024 et de corrections de sécurité jusqu’au 4 février 2025.
  • Laravel 11 devrait bénéficier de corrections de bugs jusqu’au 5 août 2025 et de corrections de sécurité jusqu’au 3 février 2026.

Devriez-vous passer à Laravel 10 ?

Il est important de se rappeler que nous n’avons pas toujours besoin de mettre à niveau la version Laravel de notre application vers la dernière version dès qu’une nouvelle version est publiée.

Laravel est un framework open source, ce qui implique que chaque fois que nous installons une nouvelle instance de Laravel sur notre machine, nous possédons la base de code du framework. Cela signifie que même si la version du framework que notre application utilise n’est plus prise en charge, l’application fonctionnera toujours ; nous devrons simplement en assurer la maintenance nous-mêmes.

Par conséquent, il est largement suggéré de donner la priorité à la stabilité des applications plutôt qu’aux mises à niveau du framework.

En bref, vous devriez envisager la mise à niveau vers Laravel 10 lorsque :

  • L’application est stable avec sa version actuelle et fonctionne sans problème.
  • La nouvelle version ajoute une fonctionnalité dont votre application a besoin ou corrige un problème que votre application rencontre.
  • L’application sera bien testée avant que les changements de la mise à niveau ne soient poussés en production.

Mises à jour de Laravel 10

Laravel 10.
Laravel 10.

Kinsta est un grand fan de Laravel. C’est pourquoi nous avons rassemblé les points forts de Laravel 10 dans un seul article que vous pourrez utiliser comme référence et guide pour utiliser toutes les nouvelles fonctionnalités. Nous vous recommandons donc d’ajouter cette page à vos favoris et de la revisiter de temps en temps.

Nouvelles fonctionnalités et mises à jour dans Laravel 10

Il ne fait aucun doute que la partie la plus excitante de toute nouvelle version est l’ajout de nouvelles fonctionnalités. Donc, sans plus attendre, commençons par jeter un coup d’œil aux nouvelles fonctionnalités et mises à jour de Laravel 10.

1. PHP 8.1 : Au cœur de Laravel 10

PHP 8.1 est la version minimale requise de PHP dans Laravel 10. Certaines fonctionnalités de PHP 8.1, telles que les propriétés readonly et array_is_list, sont utilisées dans Laravel 10.

2. Prise en charge de PHP 8.2

PHP 8.2 a été publié le 8 décembre 2022, soit deux mois seulement avant la date de sortie de Laravel 10. Pourtant, cela ne devrait pas vous empêcher d’utiliser les fonctionnalités de PHP 8.2, car sans rien faire de plus, Laravel 10 est prêt pour PHP 8.2.

En fait, l’ensemble de l’écosystème Laravel, y compris Forge, Vapor et Envoyer, prend en charge PHP 8.2, et vous pouvez même utiliser PHP 8.2 avec Laravel 9. C’est vraiment cool !

3. Mise à jour des paquets officiels Laravel

Non seulement le framework est maintenu de manière professionnelle et mis à jour régulièrement, mais tous les paquets officiels et l’écosystème le sont également.

Voici une liste des paquets officiels Laravel les plus récents qui ont été mis à jour pour prendre en charge Laravel 10 :

  1. Breeze
  2. Stripe Cashier
  3. Dusk
  4. Horizon
  5. Installer
  6. Jetstream
  7. Passeport
  8. Pint
  9. Sail
  10. Scout
  11. Valet

Un autre plaisir pour les fans de Rails, Vue, React et Svelte, Inertiajs 1.0.1 prend également en charge Laravel 10.

4. Mise à niveau de la version de Predis

Predis est un client Redis robuste pour PHP qui peut vous aider à tirer le meilleur parti de la mise en cache pour offrir une expérience utilisateur fantastique. Laravel supportait auparavant les versions 1 et 2, mais à partir de Laravel 10, le framework ne supporte plus Predis 1.

Bien que la documentation de Laravel mentionne Predis comme paquet pour interagir avec Redis, vous pouvez également utiliser l’extension PHP officielle. Cette extension fournit une API pour communiquer avec les serveurs Redis.

5. Déclarations de type natives

Laravel avait l’habitude d’utiliser des DocBlocks dans son code squelette pour clarifier ce qu’un morceau de code fait et quels types de paramètres ou de réponses attendre. Cependant, grâce aux déclarations de type natives dans Laravel 10, cela va changer.

La meilleure façon d’expliquer ce changement est de prendre un exemple simple. Au lieu qu’une fonction ressemble à ceci :

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

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

…elle ressemblera à ceci :

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

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

Ce changement est purement au bénéfice de l’expérience du développeur, car les IDE connaitront la forme du paramètre et de la réponse attendus. Il fournira une meilleure clarté des types lorsque cela n’est pas possible avec les types natifs de PHP. Par conséquent, il aidera les éditeurs de code à mieux fonctionner avec les fonctions de complétion automatique.

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

Si vous vouliez rendre une règle de validation invocable dans Laravel 9, vous deviez ajouter un drapeau --invokable après la commande Artisan. Cela n’est plus nécessaire car toutes les règles de Laravel 10 sont invocables par défaut. Vous pouvez donc exécuter la commande suivante pour créer une nouvelle règle invocable dans Laravel 10 :

php artisan make:rule CustomRule

7. Prise en charge de la modification native des colonnes

Dans le but d’éliminer le besoin du paquet DBAL (doctrine/dbal) lors de l’utilisation de change() pour modifier les colonnes, une nouvelle fonctionnalité a été introduite dans Laravel 10 qui permet aux développeurs d’utiliser la méthode change() et de modifier les colonnes avec MySQL, PostgreSQL et SQL Server sans avoir besoin de paquets supplémentaires. Il s’agit d’un changement de rupture important et risqué, mais nous pensons qu’il en vaut la peine car il élimine la dépendance à un paquet supplémentaire.

Pour mieux comprendre la nouvelle fonctionnalité, consultez l’exemple ci-dessous :

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

Maintenant, nous supposons que nous avons une colonne pour user_balance et que nous voulons changer son type. À partir de Laravel 10, nous pouvons simplement faire ceci :

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

Le code ci-dessus modifiera avec succès le type de la colonne, mais il supprimera également les attributs UNSIGNED, DEFAULT et COMMENT. Par conséquent, il est important de ne pas oublier d’ajouter tous les attributs lorsque vous modifiez le type d’une colonne :

$table->bigInteger('user_balance')->unsigned()->default(0)->comment('balance')->change();

Dans le cas où vous avez plusieurs connexions de base de données et que vous avez déjà installé DBAL, il est recommandé d’appeler la méthode Schema::useNativeSchemaOperationsIfPossible() à l’intérieur de la méthode de démarrage dans AppProvidersAppServiceProvider pour pouvoir utiliser les opérations de schéma natives et pour utiliser les opérations natives avant de s’appuyer sur le package (SQLite, par exemple, ne supporte pas encore cela) :

use IlluminateSupportFacadesSchema;
class AppServiceProvider extends ServiceProvider
{
  public function boot()
  {
    Schema::useNativeSchemaOperationsIfPossible();
  }
}

8. Récupération native du type de colonne

Une autre caractéristique notable de Laravel 10 est la possibilité d’utiliser la méthode Schema::getColumnType sans devoir s’appuyer sur le package doctrine/dbal. Nous utilisons actuellement Schema::getColumnType avec DBAL pour obtenir le type de colonne. DBAL fait correspondre chaque type de colonne natif à son équivalent DBAL, et il ne prend pas en charge de nombreux types de colonnes utilisés par Laravel dans diverses bases de données.

Dans Laravel 10, en revanche, la nouvelle méthode Schema::getColumnType renvoie le type de colonne réel plutôt que son équivalent DBAL. Elle vous permet également d’écrire des tests d’intégration pour la nouvelle fonctionnalité de modification native des colonnes. Vous pouvez utiliser cette fonctionnalité pour obtenir soit le nom du type de données, soit la définition complète du type de la colonne spécifiée :

Schema::getColumnType('products', 'price'); // decimal

9. Algorithme de hachage plus rapide

xxHash est un algorithme de hachage incroyablement rapide. Il présente un grand caractère aléatoire et une grande dispersion en sortie, ainsi qu’une unicité pour réduire les collisions. Étant donné que PHP 8.1 prend en charge xxh128, et que Laravel 10 fonctionne sur PHP 8.1, avoir un algorithme de hachage aussi fiable dans Laravel 10 est idéal.

Il est intéressant de mentionner que Taylor a souligné, lors de son examen de ce changement, que certains paquets tiers peuvent compter sur le fait que les noms de fichiers soient dans le format exact du hachage SHA-1, qui est l’algorithme que Laravel utilisait pour le hachage. Par conséquent, si vous prévoyez une mise à niveau vers Laravel 10, il serait judicieux de revérifier ce point dans tous les paquets tiers que vous utilisez dans votre application.

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

Actuellement, l’utilisation de whereExists() nécessite de configurer la requête imbriquée à l’aide d’une fermeture. Heureusement, avec Laravel 10, il est maintenant possible d’inclure un Eloquent Builder comme requête imbriquée. Cela permet d’utiliser des méthodes de constructeur personnalisées, des scopes de modèle, etc.

Par exemple, nous procédons normalement ainsi si nous voulons utiliser whereExists():

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

Avec Laravel 10, nous pouvons simplement faire ceci à la place :

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

11. Optimisation Eager Loading

L’une des nouvelles fonctionnalités intéressantes de Laravel 10 est l’optimisation du chargement rapide lorsqu’il n’y a pas de clés à charger. Ce changement est plus un correctif qu’une fonctionnalité car il s’attaque à un problème actuel dans lequel les relations de chargement rapide entrainent l’exécution d’un grand nombre de requêtes impossibles.

À l’heure actuelle, lorsque des relations sont chargées par anticipation et qu’il n’y a pas de clés à charger, Laravel exécute toujours une requête similaire à celle-ci :

select * from `table_name` where 0 = 1

Toutefois, la nouvelle mise à jour de Laravel 10 vérifie d’abord s’il y a des clés disponibles et, s’il n’y en a pas, fournit une collection vide, éliminant ainsi la nécessité d’interroger inutilement la base de données.

12. $path Facultatif pour les méthodes de système de fichiers

Dans Laravel 10, le paramètre $path est facultatif pour les méthodes ci-dessous :

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

Ainsi, au lieu de faire cela afin de stocker un fichier téléchargé sur Amazon S3:

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

…nous pouvons faire ceci :

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

13. Expressions de base de données et formatage spécifique à la grammaire

Quatre jours seulement avant la sortie de Laravel 10, l’équipe centrale de Laravel a décidé de fusionner une fonctionnalité brillante qui répond à un grand défi lorsque l’on travaille avec plusieurs bases de données.

Dans les versions précédentes, si nous travaillions avec PostgreSQL et MySQL et que nous voulions retourner la première valeur d’une liste en tant qu’alias, nous devions écrire du code de base de données brut et faire ce qui suit :

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 le code ci-dessus, nous utilisons la fonctionCOALESCE() pour retourner la première valeur non nulle en tant qu’alias nommé first visitor. Ainsi, chaque fois que nous aurions besoin d’effectuer une opération comme celle-ci, nous devrions écrire à nouveau du code de base de données brut.

La nouvelle fonctionnalité nous permet de créer des classes d’expression réutilisables qui mettent en œuvre les expressions et instructions brutes dont nous avons besoin pour nos requêtes une seule fois. Ainsi, il ne sera plus nécessaire d’écrire du code brut de base de données lorsque nous voudrons utiliser davantage de fonctionnalités de base de données.

Pour en revenir à l’exemple ci-dessus, suivons la nouvelle approche de Laravel 10 pour obtenir le même résultat, mais sans utiliser la syntaxe du code brut de la base de données.

Tout d’abord, nous devrions créer deux classes – une pour l’aliasing, et une pour l’utilisation de la fonction COALESCE():

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})";
  }
}

Ensuite, nous pouvons procéder ainsi pour obtenir le résultat souhaité à la fois pour MySQL et PostgreSQL :

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

Vous pourriez penser que c’est trop de travail à écrire, mais cela en vaut vraiment la peine car vous n’aurez à l’écrire qu’une seule fois et cela vous évitera de devoir changer de syntaxe lorsque vous aurez affaire à plusieurs bases de données.

De plus, selon le créateur de la pull request, Tobias Petry, ce changement ouvrira la porte à de nombreuses possibilités de paquets pour fournir les classes d’expression brute les plus courantes pour vous. Il a même déclaré qu’il les fournira à la communauté dans un paquet dédié après la sortie de Laravel 10.

14. Mise à jour du serveur SQL pour utiliser FETCH et OFFSET pour les requêtes qui n’incluent pas de nom

de domaine

orderBy

Lorsque nous utilisons orderBy dans une requête comme celle-ci :

$builder->select('*')->from('users')->skip(11)->take(10)->orderBy('email', 'desc');

Laravel produit alors une déclaration SQL qui utilise FETCH et OFFSET:

select * from [users] order by [email] desc offset 11 rows fetch next 10 rows only

Cependant, dans les versions précédentes de Laravel, si nous supprimons orderBy de la requête, elle revient à l’ancienne méthode de décalage des résultats :

$builder->select('*')->from('users')->skip(11)->take(10);
select * from (select *, row_number() over (order by (select 0)) as row_num from [users]) as temp_table where row_num between 11 and 20 order by row_num

Mais maintenant, cette nouvelle mise à jour permettra à votre application Laravel 10 d’utiliser FETCH et OFFSET même si orderBy n’est pas présent :

select * from [users] order by (SELECT 0) offset 10 rows fetch next 10 rows only

Cette mise à jour améliore la vitesse de 33 % et nécessite moins d’étapes d’exécution.

15. Prise en charge de PHPUnit 10

Laravel 10 prend en charge PHPUnit 10. Il s’agit d’un framework de test unitaire pour PHP et la version 10 a été publiée le 3 février 2023. Laravel 10 prend toujours en charge PHPUnit 9 et 8.

16. Améliorations de la sécurité pour la classe Timebox

Laravel 10 comprend des améliorations de sécurité pour la classe Timebox, qui visent à protéger l’application contre les attaques intemporelles de synchronisation. La classe Timebox est implémentée à l’intérieur de la méthode hasValidCredentials.

La classe Timebox a maintenant un support pour gérer les exceptions lancées pendant l’exécution d’un callback de Timebox.

17. dispatch() Le comportement de la méthode est le même dans tout Laravel 10

La méthode dispatch() à l’intérieur du trait DispatchesJobs vérifie désormais les emplois uniques de la même manière que la fonction d’aide globale dispatch(). Ainsi, les méthodes dispatch() adoptent les mêmes fonctionnalités à travers Laravel 10.

18. Fanion Laravel

Si vous avez déjà travaillé sur une application web qui est constamment mise à jour avec de nouvelles fonctionnalités, vous comprenez à quel point les fanions de fonctionnalité sont vitaux. Néanmoins, préserver les drapeaux de fonctionnalités nécessiterait une quantité importante de travail pour le faire correctement, mais ne vous inquiétez pas, Laravel vous couvre avec le nouveau paquetage de première partie Laravel Pennant.

Laravel Pennant fournit une solution facile à utiliser pour la conservation des feature flags. Il est même livré avec un pilote de tableau en mémoire et une base de données.

Vous pouvez facilement définir une nouvelle fonctionnalité :

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

Vous pourrez ensuite vérifier si l’utilisateur a accès à cette fonctionnalité ou non :

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

C’est même plus joli dans Laravel Blade :

@feature('new-color-button')
// Kinsta Rules!!
@endfeature

19. Laravel Process Interaction

Le nouveau Process Interactions de Laravel 10 fait des tests et de l’exécution des processus CLI un jeu d’enfant. Elle offre une API simple pour alléger le fardeau des tests. Prenons l’exemple du PR original de cette fonctionnalité par Taylor :

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

Vous avez probablement remarqué à quel point le code ci-dessus est simple et propre. Si l’on passe aux processus de construction, les choses ne font que s’améliorer :

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

Maintenant, pour utiliser cette nouvelle fonctionnalité en test, vous pouvez créer un nouveau et faux processus comme ceci :

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

Ensuite, vous pouvez exécuter le faux processus et utiliser les assertions nouvellement disponibles:

$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';
});

20. Échafaudage Pest

L’échafaudage de test Pest est maintenant activé par défaut lors de la création de nouveaux projets Laravel. Pour activer cette fonctionnalité, utilisez le drapeau --pest lors de la création d’une nouvelle application avec l’installateur Laravel :

laravel new example-kinsta-app --pest

21. Fonction d’aide pour les mots de passe de type chaîne

Laravel 10 peut créer un mot de passe aléatoire et sécurisé avec une longueur donnée :

$password = Str::password(12);

Méthodes et packages dépréciés dans Laravel 10

Ensuite, nous allons examiner les paquets et les méthodes qui ont été supprimés avec la sortie de Laravel 10.

Laravel 10 dit au revoir à PHP 8.0

Le framework Laravel ne prend plus en charge PHP 8.0 dans Laravel 10. Par conséquent, si vous prévoyez de mettre votre application à niveau vers Laravel 10, vous devez d’abord mettre à jour la version PHP vers PHP 8.1 ou PHP 8.2.

Suppression des méthodes obsolètes

La documentation de Laravel est mise à jour avec tous les changements et les dépréciations importantes. Si vous comptez migrer un projet actuel vers Laravel 10, tout code qui utilise une méthode dépréciée doit être réécrit dans une nouvelle approche pour obtenir le même résultat.

Voici une liste de certaines des dépréciations :

  • La méthode Route::home (dépréciée dans Laravel 9)
  • Fonctions et méthodes autour de dispatchNow, déprécié pour encourager les développeurs à utiliser dispatchSyncla seule méthode supportée pour la distribution immédiate
  • La méthode getBaseQuery, qui a un équivalent toBase
  • La classe MaintenanceModeException
  • Le trait MocksApplicationServices
  • La méthode Mail::failures du mail fake
  • La propriété $dates (utilisez $casts à la place)
  • La méthode assertTimesSent()
  • Support de Predis 1 et DBAL 2
  • Toutes les dépréciations liées à doctrine/dbal depuis que Laravel a abandonné la prise en charge de la version 2

Comment installer Laravel 10

L’équipe centrale de Laravel a veillé à ce que tous les développeurs puissent accéder facilement au framework sur différents environnements. Par conséquent, il existe plusieurs façons de démarrer avec Laravel 10 sur votre machine, et vous êtes entièrement libre de choisir celle qui vous convient le mieux.

Installer Laravel 10 sur MacOS

Vous pouvez facilement démarrer avec Laravel 10 sur MacOS en utilisant Docker et Laravel Sail. Vous pouvez exécuter la commande de terminal suivante depuis le répertoire où vous souhaitez installer l’application, en gardant à l’esprit que seuls les caractères alphanumériques, les tirets et les underscores sont autorisés pour le nom de l’application :

curl -s "https://laravel.build/example-kinsta-app" | bash

Une fois le processus d’installation terminé, rendez-vous dans le répertoire du projet et utilisez Sail pour exécuter votre nouveau projet en tapant la commande suivante dans le terminal :

./vendor/bin/sail up

Sail utilisera sa solution intégrée pour exécuter votre projet Laravel en utilisant Docker, et une fois terminé, votre application sera prête sur http://localhost.

Installer Laravel 10 sur Windows 10 et 11

Docker Desktop peut être utilisé pour installer rapidement Laravel 10 sur Windows. Cependant, que vous utilisiez Windows 10 ou 11, vous devez d’abord activer l’une des deux options suivantes sur votre machine :

  • Le sous-système Windows pour Linux 2 (WSL2) est une fonctionnalité du système d’exploitation Windows qui vous permet d’exécuter un système de fichiers Linux et des outils de ligne de commande Linux directement sur Windows.
  • Fonctionnalité Hyper-V Backend vous permet de créer et d’exploiter une version logicielle d’un ordinateur connue sous le nom de machine virtuelle.

Dès que vous avez rempli toutes les conditions requises par Docker, vous pouvez exécuter la commande suivante dans votre terminal :

curl -s https://laravel.build/example-kinsta-app | bash

Utilisez ensuite Sail pour exécuter votre application sur http://localhost en exécutant la commande suivante depuis le répertoire racine de votre projet Laravel 10 nouvellement installé :

./vendor/bin/sail up

D’ailleurs, de nombreux développeurs préfèrent le système d’exploitation Linux aux autres systèmes d’exploitation car il leur permet de travailler plus efficacement et plus rapidement. Avec WSL, vous pouvez profiter de la sécurité, des performances et de la compatibilité avec les jeux d’Ubuntu. Ubuntu est une distribution ou une version de Linux bien connue pour sa convivialité et sa facilité d’utilisation.

Il est recommandé d’utiliser Visual Studio Code et d’installer l’extension officielle Microsoft WSL pour pouvoir ouvrir n’importe quel dossier dans le sous-système Windows pour Linux, et profiter de l’ensemble des fonctionnalités de vscode. En outre, l’extension Remote Development est une autre option qui est référencée dans la documentation Laravel.

Installer Laravel 10 avec Composer

Que vous utilisiez macOS ou Windows, Composer peut vous permettre d’être opérationnel avec Laravel 10 en un rien de temps.

Vous devez d’abord vous assurer que PHP ≤ 8.1, node, npm et Composer sont installés sur votre machine.

  • Pour macOS : Composer peut être installé en utilisant Homebrew.
  • Pour Windows : La dernière version stable de Composer peut être téléchargée sur le site officiel de Composer.

Une fois que vous l’avez fait, vous pouvez installer Laravel Installer globalement et l’utiliser pour installer votre nouvelle application Laravel 10 :

composer global require laravel/installer
laravel new example-kinsta-app

Ou, vous pouvez créer une nouvelle application Laravel 10 directement en utilisant uniquement Composer :

composer create-project laravel/laravel example-kinsta-app

Comment installer Laravel 11

Nous sommes encore à un an de la sortie de Laravel 11. Cependant, Laravel 11 est actuellement disponible pour que vous puissiez tester ses fonctionnalités. Non seulement il est disponible, mais il comprend également quelques PR fusionnés sur GitHub, comme l’abandon du support de PHP 8.1.

Le drapeau --dev dans l’installateur Laravel installe la branche master du dépôt laravel/laravel, et maintenant que Laravel 10 est sorti, Laravel 11 sera disponible sur la branche master. Si vous utilisez Laravel Installer, il vous suffit d’exécuter cette commande dans votre terminal :

laravel new example-kinsta-app --dev

Ou, si vous préférez utiliser Composer:

composer create-project --prefer-dist laravel/laravel example-kinsta-app dev-master

Pour mieux comprendre la commande Composer, voici une explication rapide :

  • laravel/laravel: Le paquet pour l’installation de Laravel
  • example-kinsta-app: Le nouveau répertoire pour votre nouveau projet (peut être modifié)
  • dev-master: La prochaine version de Laravel (dans ce cas, Laravel 11)

Après avoir installé Laravel 11, vous pouvez confirmer la version en naviguant vers le nouveau répertoire example-kinsta-app et en exécutant cette commande Artisan :

$ php artisan --version
Laravel Framework 11.x-dev

Comment mettre à niveau un projet vers Laravel 10

Êtes-vous tenté de passer à Laravel 10 ? L’équipe centrale de Laravel travaille dur sur la documentation pour fournir un guide de mise à niveau simple et transparent, tout en couvrant tous les changements de rupture possibles. N’hésitez pas à consulter le guide officiel de mise à niveau vers Laravel 10.

Vous devriez également garder un œil sur Laravel Shift maintenant que Laravel 10 est sorti. Laravel Shift offre une approche simple et automatisée de la mise à niveau de votre version de Laravel.

Comment déployer des projets Laravel 10

Le déploiement de Laravel 10 n’est pas différent du déploiement d’un projet Laravel 9.

Voici la configuration requise pour le serveur :

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

Vous pouvez déployer et héberger votre projet Laravel 10 sur Kinsta en quelques minutes puisque Laravel fait partie d’une longue liste de frameworks supportés pour les applications hébergées.

Déployer Laravel 10 sur Kinsta : Guide étape par étape

Il y a plusieurs avantages à héberger et à déployer vos applications Laravel sur Kinsta, notamment celui de ne pas avoir à s’occuper de la configuration du déploiement.

Kinsta fournit un outil convivial mais puissant pour déployer des applications, se connecter à des bases de données et surveiller les performances en direct. Cet outil est connu sous le nom de MyKinsta, et dans cette section, nous allons vous guider à travers les étapes pour déployer une application Laravel 10 en l’utilisant.

1. Préparer votre application

La page d'accueil d'une application Laravel 10 déployée sur Kinsta.
La page d’accueil d’une application Laravel 10 déployée sur Kinsta.

En supposant que vous ayez une application Laravel 10 en local, nous devons nous assurer qu’elle dispose d’un dépôt GitHub. Nous utiliserons ce dépôt pour déployer l’application plus tard.

Vous pouvez inclure un fichier .htaccess dans le répertoire racine de votre application qui contient les éléments suivants :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Pour Laravel, cela redirige toutes les requêtes vers public/index.php. Toutefois, si nécessaire, vous pouvez mettre à jour cette commande lors de l’ajout de votre application (étape Configurer vos processus ) ou après le déploiement, sur la page Processus de l’application. Vous pouvez utiliser :

  • heroku-php-apache2 /public
  • php artisan serve --host 0.0.0.0 --port 8080

2. Se connecter à MyKinsta

La page de connexion de MyKinsta.
La page de connexion de MyKinsta.

Rendez-vous sur la page de connexion de MyKinsta et saisissez votre adresse e-mail et votre mot de passe. Si vous n’avez pas encore de compte, vous pouvez enregistrer un nouveau compte et obtenir 20 $ de réduction sur le premier mois de votre abonnement à n’importe quel plan tarifaire.

3. Autoriser Kinsta sur GitHub

Une fois que vous vous connectez, vous remarquerez que le tableau de bord a des options pour créer un site WordPress, créer une application, ou créer une base de données. Nous allons appuyer sur le bouton Connecter GitHub pour nous intégrer à GitHub.

Le tableau de bord MyKinsta.
Le tableau de bord MyKinsta.

Ensuite, cliquez sur le bouton Continuer avec GitHub. Si vous n’êtes pas déjà connecté à GitHub, vous aurez l’option de vous connecter. Ensuite, vous pouvez autoriser l’application Kinsta GitHub à accéder à votre compte GitHub en sélectionnant Autoriser Kinsta.

Enfin, GitHub redirigera votre navigateur vers MyKinsta afin de poursuivre la configuration de l’application.

Connexion de MyKinsta à GitHub.
Connexion de MyKinsta à GitHub.

Après avoir été connecté à GitHub, vous verrez apparaître le popup/modal Add Application, qui comporte un menu déroulant permettant de sélectionner un dépôt GitHub. Cliquez sur le champ du dépôt GitHub et sélectionnez Editer les permissions GitHub dans la liste déroulante.

Ajout d'une application à MyKinsta.
Ajout d’une application à MyKinsta.

Cela ouvrira un nouvel onglet dans votre navigateur vers la page web de GitHub, où vous pouvez choisir les données auxquelles Kinsta pourra accéder. Au lieu d’autoriser l’accès à tous les dépôts, envisagez de choisir uniquement celui ou ceux que vous voulez que Kinsta utilise.

Cliquez sur Sélectionner uniquement les dépôts et choisissez le dépôt que vous souhaitez déployer.

Accordez à Kinsta l'accès à GitHub.
Accordez à Kinsta l’accès à GitHub.

Cliquez ensuite sur Installer, et vous êtes prêt !

Lorsque vous revenez à MyKinsta et cliquez sur le champ du dépôt GitHub, le dépôt autorisé devrait être visible. En outre, vous pouvez cocher la case Déploiement automatique sur commit pour permettre à MyKinsta de déployer automatiquement votre application dès que vous apportez des modifications au référentiel GitHub.

Sélection d'une branche de dépôt pour MyKinsta.
Sélection d’une branche de dépôt pour MyKinsta.

4. Ajouter les détails de base de l’application

Vous pouvez maintenant donner à l’application un nom qui ne sera utilisé que dans le tableau de bord et choisir parmi 25 emplacements de centre de données, ce qui vous permet de placer votre application dans l’emplacement géographique le plus proche de vos utilisateurs. Si vous avez besoin d’aide pour déterminer quel centre de données est idéal pour votre application, consultez notre guide pour choisir le bon emplacement de centre de données.

Ajout des détails de base d'une application.
Ajout des détails de base d’une application.

5. Ajouter des variables d’environnement

La section suivante concerne l’ajout de variables d’environnement et la variable la plus importante est le site APP_KEY.

Si vous n’avez pas encore de clé dans votre fichier .env, vous pouvez en générer une à l’aide d’un générateur de clés Laravel en ligne. Ensuite, insérez APP_KEY dans le champ Key 1 et insérez la clé d’application générée dans le champ Value 1.

Enfin, sélectionnez Disponible pendant l’exécution et Disponible pendant le processus de construction.

Ajout de variables d'environnement dans MyKinsta.
Ajout de variables d’environnement dans MyKinsta.

6. Configurer l’environnement de construction

La chose magique ici est que vous n’avez pas à configurer quoi que ce soit ! Vous pouvez procéder en cliquant sur le bouton Continuer, et voilà : vous avez terminé la configuration de l’environnement de construction. Cependant, si vous voulez améliorer les ressources de construction pour assurer une construction plus rapide, vous pouvez choisir votre choix dans le champ Ressources de construction.

Le champ « Chemin de construction » est facultatif. Vous pouvez le laisser vide, et MyKinsta utilisera le dossier racine.

Configurer l'environnement de construction de l'application.
Configurer l’environnement de construction de l’application.

7. Configurer les processus et le moyen de paiement

Pour la section Ressources, remplissez chaque champ avec les informations suivantes :

  • Nom du processus : Le nom affiché dans la liste des processus de votre application.
  • Type de processus : Choisissez-le avec soin, car il ne peut pas être modifié une fois qu’il est défini. Vous pouvez toutefois ajouter et modifier des processus supplémentaires, comme un travail en arrière-plan, sur la page Processus de votre application après le déploiement.
  • Commande de démarrage : La commande « Start » de votre processus (non obligatoire).
  • Taille du pod : La capacité du pod dont vous pensez avoir besoin pour votre processus.
  • Nombre d’instances : Le nombre d’instances pour votre processus (max 50).

Notez que vous pouvez simplement cliquer sur Continuer sans remplir le champ Commande de démarrage, car Kinsta détecte automatiquement la commande requise lors du premier déploiement.

Configurer les processus de l'application.
Configurer les processus de l’application.

Pour la dernière étape, examinez les coûts d’utilisation mensuels calculés pour votre application, puis confirmez votre moyen de paiement. Lorsque vous avez terminé, cliquez sur le bouton Confirmer le moyen de paiement.

Confirmez les détails du paiement.
Confirmez les détails du paiement.

Et c’est terminé ! Kinsta fera tout le travail en arrière-plan pour servir votre application.

Chargement du processus de déploiement de l'application.
Chargement du processus de déploiement de l’application.

Vous aurez ensuite accès à tous les détails du processus de déploiement, ainsi qu’à l’URL temporaire de l’application en direct, que vous pourrez remplacer plus tard par votre propre domaine.

Déploiement réussi de l'application Laravel 10 sur MyKinsta.
Déploiement réussi de l’application Laravel 10 sur MyKinsta.

Votre application Laravel 10 est maintenant en direct sur Kinsta, mais que faire si vous devez effectuer un changement en production ? Que faire si nous voulons modifier l’attribut href d’une balise d’ancre ?

Puisque nous avons activé l’option de déploiement automatique sur commit, MyKinsta détectera toute modification que nous apportons à la branche déployée et mettra automatiquement à jour l’application en direct en conséquence.

8. Connectez Laravel 10 à la base de données MySQL

Maintenant que nous avons déployé notre application Laravel 10, nous pouvons construire sans effort une base de données et la lier à notre application. Tout ce que vous avez à faire est de cliquer sur Applications dans le menu de navigation à gauche, puis Ajouter un service et sélectionner Base de données.

Ajout d'une nouvelle base de données dans MyKinsta.
Ajout d’une nouvelle base de données dans MyKinsta.

Après avoir rempli tous les champs, cliquez sur Créer une base de données. Cela établira une nouvelle base de données prête pour les connexions internes et externes. Dans notre scénario, nous avons besoin d’une connexion interne au projet Laravel 10 que nous avons déployé.

Pour cela, il vous suffit de cliquer sur Ajouter une application dans la section Connexions internes et de sélectionner votre application. Vous pouvez cocher la case Ajouter des variables d’environnement à l’application et MyKinsta remplira toutes les variables .env dont votre application a besoin.

Connecter une base de données à une application Laravel 10.
Connecter une base de données à une application Laravel 10.

Avec cela, votre application Laravel 10 est déployée et connectée à une base de données.

Comment contribuer à Laravel 10

Bien que Laravel soit maintenu par une équipe centrale, il est activement développé par plus de 3 000 contributeurs bénévoles.

Voulez-vous faire partie de ces contributeurs et aider à façonner l’avenir de Laravel ? Si vous avez répondu oui, vous pourriez aider les développeurs du monde entier en ajoutant une nouvelle fonctionnalité, en corrigeant un bogue ou même en réécrivant une partie confuse de la documentation.

Pour contribuer à Laravel 10, voici ce que vous devez faire :

  1. Rendez-vous sur le dépôt GitHub de Laravel et consultez les pull requests dont le titre comporte la mention [10.x]. Vous aurez ainsi une idée précise de toutes les demandes de retrait pour Laravel 10. Si l’une des PR aborde la contribution que vous aviez l’intention de faire, voyez si vous pouvez l’améliorer.
  2. Si votre contribution prévue n’a pas encore été abordée par quelqu’un d’autre, vous pouvez alors créer une PR vous-même.
  3. Tout ne vaut pas la peine d’être ajouté à la base de code du framework. Par conséquent, efforcez-vous de ne mettre en œuvre que des améliorations qui seront faciles à maintenir à l’avenir et qui aideront la grande majorité de la communauté Laravel.
  4. Veillez à respecter les directives de contribution de Laravel pour avoir plus de chances de voir vos modifications fusionnées avec le framework.

Une autre raison d’aimer Laravel 10 est qu’il vous permet de gagner de l’argent pour vos contributions grâce aux chasses aux bogues ! Nous y reviendrons plus tard.

Concours de chasse aux bogues de Laravel 10

The Laravel 10 logo followed by a green cartoon insect with gray stripes.
Concours de chasse aux bugs de Laravel 10.

Laravel 10 a annoncé un excellent concours dans lequel un contributeur choisi au hasard a la chance de gagner 1 000 $. Il s’agit du premier concours de ce type dans l’histoire de Laravel. Il a été conçu pour encourager la communauté à trouver et à corriger les bugs cachés dans Laravel 10.

Les règles étaient simples :

  • Seuls les PR soumis à la branche 10.x du dépôt laravel/framework étaient éligibles.
  • Seules les corrections de bogues « authentiques » étaient prises en compte. Les nouvelles fonctionnalités, le remaniement et les corrections de fautes de frappe ne sont pas pris en compte.
  • Chaque correction de bogue doit être soutenue par un test.
  • Les corrections de bogues acceptées ont été étiquetées sur GitHub, et un gagnant aléatoire sera annoncé après la conclusion du concours.

Le concours s’est terminé lorsque la première version stable de Laravel 10 a été publiée le 14 février 2023.

Résumé

Jusqu’à présent, Laravel 10 semble être extrêmement prometteur, et nous sommes impatients de découvrir tous les cadeaux qu’il apporte au monde PHP.

Si vous cherchez d’autres moyens d’améliorer les performances de votre application Laravel, vous pourriez envisager de passer à un fournisseur d’hébergement premium. Les solutions d’hébergement d’applications de Kinsta sont parmi les plus rapides, les plus sécurisées et les plus faciles à utiliser du secteur, et elles sont spécialement conçues pour les développeurs, offrant une rationalisation de la production et un support expert 24/7 par nos propres développeurs chevronnés.

Mostafa Said

I’m Mostafa, a full-stack developer with a knack for all things Laravel, Inertia, and JavaScript frameworks. When I'm not coding, you can find me sharing my knowledge through tutorials, diving into hackathons (and winning a few), and spreading the love for tech by teaching what I've learned.