Guide de migration
Ce guide s'adresse principalement aux utilisateurs ayant déjà une expérience de Leaf 2 et qui souhaitent se familiariser avec les nouvelles fonctionnalités et les changements de Leaf 3. Il ne s'agit pas d'un document que vous devez lire de bout en bout avant d'essayer Leaf 3. Bien que beaucoup de choses semblent avoir changé, une grande partie de ce que vous connaissez et aimez dans Leaf est toujours la même. Nous avons voulu être aussi complets que possible et fournir des explications détaillées et des exemples pour chacun des changements.
Je viens d'un autre framework
Migration à partir d'un autre framework ? LISEZ CECI pour démarrer.
Démarrage rapide
Si vous voulez rapidement créer uun nouveau projet avec Leaf 3, créez un dossier et exécutez :
composer require leafs/leaf
Cela permettra de configurer rapidement Leaf 3 avec les modules par défaut. A partir de là, créez votre fichier index.php
et ajoutez ce code.
En utilisant le mode Fonctionnel :
<?php
require __DIR__ . "/vendor/autoload.php";
app()->get("/", function () {
response()->json(["name" => "Leaf"]);
});
app()->run();
En utilisant le mode Classe :
<?php
require __DIR__ . "/vendor/autoload.php";
$app = new \Leaf\App();
$app->get("/", function () use($app) {
$app->response()->json(["name" => "Leaf"]);
});
$app->run();
Vous pouvez ensuite le serveur PHP intégré
php -S localhost:5500
Vous pouvez aussi utiliser Leaf CLI:
leaf create <app-name> --v3
Et lancez votre application avec :
leaf serve
Migration depuis Leaf 2
Comme nous l'avons déjà mentionné, nous avons rendu Leaf 3 aussi rétrocompatible que possible avec Leaf 2.5+. Cela signifie que le passage de la v2 à la v3 sera un jeu d'enfant, ou presque.
- Installez Leaf 3
composer require leafs/leaf
Ou avec Leaf CLI
leaf install leaf
Attention
Vous devriez probablement supprimer votre dossier vendor
et package-lock.json
avant d'exécuter la commande ci-dessus pour vous assurer que toutes les dépendances sont correctement réinstallées.
- Après cela, il s'agit juste d'installer les modules requis dans votre projet. Par exemple, si vous utilisez
Leaf\Auth
, vous devrez installer le module auth.
Cela peut être fait avec :
leaf install auth
Ou avec Composer:
composer require leafs/auth
Faites de même pour tous les autres modules de votre projet. Votre application devrait être de nouveau sur pied et fonctionner encore plus rapidement qu'avant.
Changements
Ce qui suit consiste en une liste de changements par rapport à la version 2.x :
Modules
Leaf 3 ne conserve que le noyau du framework avec quelques utilitaires, toutes les autres fonctionnalités ont été empaquetées comme des modules. Cela signifie que vous aurez des erreurs si vous essayez d'utiliser certains paquets comme Leaf\Auth
ou Leaf\Flash
sans les avoir installés au préalable.
Ce n'est pas vraiment un problème puisque l'installation dudit module résout automatiquement tous les problèmes liés à son absence.
CORS
Dans la v2, une configuration de base du CORS était disponible sur l'objet Leaf, mais elle a été abandonnée et remplacée par le module cors. Ce module contient des configurations CORS de base et avancées et s'inspire du package cors d'ExpressJS. Ainsi, si vous avez de l'expérience avec cette bibliothèque, vous n'aurez aucun problème à utiliser le module cors de Leaf.
Pour résoudre les problèmes de cors dans votre application Leaf 2, suivez ces étapes :
- Installez le module cors
composer require leafs/cors
Remplacez la configuration originale de cors par le module cors. (Ceci est fait sous le capot pour vous, tout ce que vous avez à faire maintenant est d'appeler la méthode cors dans votre application Leaf).
Remplacez ceci :
$app = new Leaf\App;
$app->evadeCors(true);
// ...
par...
$app = new Leaf\App;
$app->cors();
// ...
Remplacez ceci :
app()->evadeCors(true);
// ...
par...
app()->cors();
// ...
La méthode cors est automatiquement liée au module cors par Leaf et donc, aucune configuration supplémentaire n'est nécessaire pour la faire fonctionner. Cors prend en compte certaines configurations optionnelles, consultez la doc du module cors. De plus, cors n'est plus disponible sur l'objet Response.
Routeur
Leaf\Router::getRequestMethod
a été déplacé vers Leaf\Http\Request::getMethod
. Cette fonction est utilisée dans le noyau de Leaf et ne devrait pas poser de problème. Cependant, si vous avez des références à cette fonction et l'utilisez dans votre application, changer vos références avec Leaf\Http\Request::getMethod
corrigera toute erreur.
Nouvelles fonctionnalités importantes
Voici quelques-unes des nouvelles fonctionnalités de Leaf 3 sur lesquelles garder un œil :