Extraction des configurations de routage de Laravel 11

3 avril 2024

Bonjour à tous !

Cet article fait suite à mon précédent billet consacré à l'extraction des configurations de démarrage de Laravel 11.

Dans cet article, je vais vous expliquer comment extraire les configurations de routage de Laravel 11. C'est parti !

L'extraction des configurations de routage de Laravel 11 vers un fichier séparé s'effectue de la même manière que les autres extractions évoquées dans l'article précédent, mais permettez-moi de vous énumérer quelques points à prendre en compte :

  1. Vous devrez enregistrer manuellement chaque groupe d'itinéraires vous-même, car avec routage ignore tous les autres paramètres si vous transmettez le en utilisant paramètre que nous allons utiliser dans cet article.
  2. Pour la raison mentionnée ci-dessus, vous devrez enregistrer manuellement le nouveau chemin de santé.
  3. Enfin, comme vous effectuez ces enregistrements manuellement, vous risquez de passer à côté des futures mises à jour que Laravel introduira dans avec routage méthode.

Si les réserves mentionnées ci-dessus ne vous posent pas de problème, alors allons-y.

Commençons par créer le fichier de démarrage :

artisan make:class -i Bootstrappers/RoutingBootstrapper

Ensuite, ouvrons le fichier que nous venons de créer et ajoutons-y le code suivant :

<?php

namespace App\Bootstrappers;

use Illuminate\Routing\Router;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Events\DiagnosingHealth;

class RoutingBootstrapper
{
    /**
     * Create a new class instance.
     */
    public function __construct()
    {
        //
    }

    /**
     * Invoke the class instance.
     */
    public function __invoke(Router $router): void
    {
        // API routes
        $router->middleware('api')
               ->prefix('api')
               ->group(base_path('routes/api.php'));

        // Web routes
        $router->middleware('web')
               ->group(base_path('routes/web.php'));

        // Health route
        $router->middleware('web')->get('/up', function () {
            $viewFile = base_path('/vendor/laravel/framework/src/Illuminate/Foundation/resources/health-up.blade.php');

            Event::dispatch(new DiagnosingHealth);

            return View::file($viewFile);
        });
    }
}

Vous pouvez ajouter ou supprimer des itinéraires à votre guise ; vous pouvez désormais utiliser le RoutingBootstrapper classe dans le bootstrap/app.php fichier :

<?php

use Illuminate\Foundation\Application;

return Application::configure(basePath: dirname(__DIR__))
                  ->withRouting((new App\Bootstrappers\RoutingBootstrapper)(...))
                  ->withMiddleware(new App\Bootstrappers\MiddlewareBootstrapper)
                  ->withExceptions(new App\Bootstrappers\ExceptionsBootstrapper)
                  ->create();

Comme je l'ai mentionné précédemment, le avec routage Cette configuration diffère quelque peu des autres méthodes, car elle accepte un Fermeture pas appelable c'est pourquoi il est important d'ajouter le (...) après l'appel de la classe qui convertit essentiellement un appelable vers un Fermeture, vous pouvez en savoir plus sur la syntaxe « first-callable » ici.

Et voilà ! À la prochaine, bon codage !