Extraction des configurations de démarrage de Laravel 11
18 mars 2024
Laravel 11 a introduit le modèle « slim », qui constitue un excellent point de départ pour les nouveaux projets. C'est un excellent moyen de démarrer un nouveau projet avec un ensemble minimal de configurations et de dépendances.
Ces modifications comprennent également le déplacement du middleware et du gestionnaire d'exceptions vers le bootstrap/app.php fichier qui peut rapidement
se retrouver encombré par de nombreuses configurations.
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
// Middleware
// More Middleware
// More and more Middleware
// ...
})
->withExceptions(function (Exceptions $exceptions) {
// Exceptions
// More Exceptions
// More and more Exceptions
// ...
})
->create();
Étant donné que ces méthodes acceptent appelable type, nous pouvons extraire les configurations dans des classes distinctes pouvant être invoquées et les utiliser
dans le bootstrap/app.php fichier.
Voyons donc comment nous pouvons extraire ces configurations dans des classes distinctes afin de rendre le bootstrap/app.php nettoyeur de fichiers
et plus facile à entretenir.
Nous utiliserons également l'un des nouveaux marque :* les commandes qui sont fabrication artisanale : cours pour créer les nouvelles classes et
je vais également les nommer Les entrepreneurs qui se débrouillent seuls car ce sont eux qui se chargent de l'initialisation de l'application.
Extraction des intermédiaires
Commencez par créer un nouvel invokable MiddlewareBootstrapper classe à l'aide de la make:class commande.
artisan make:class -i Bootstrappers/MiddlewareBootstrapper
Cela créera un nouveau MiddlewareBootstrapper classe dans le App\Bootstrappers espace de noms, nous pouvons désormais déplacer les
configurations des intermédiaires depuis le bootstrap/app.php fichier vers le MiddlewareBootstrapper classe.
<?php
namespace App\Bootstrappers;
use Illuminate\Foundation\Configuration\Middleware;
class MiddlewareBootstrapper
{
/**
* Create a new class instance.
*/
public function __construct()
{
//
}
/**
* Invoke the class instance.
*/
public function __invoke(Middleware $middleware): void
{
// Middleware
// More Middleware
// More and more Middleware
// ...
}
}
Nous pouvons désormais utiliser le MiddlewareBootstrapper classe dans le bootstrap/app.php fichier.
<?php
use Illuminate\Foundation\Application;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(new App\Bootstrappers\MiddlewareBootstrapper())
->withExceptions(function (Exceptions $exceptions) {
// Exceptions
// More Exceptions
// More and more Exceptions
// ...
})
->create();
Extraction des exceptions
Créons maintenant un nouvel invokable ExceptionsBootstrapper classe à l'aide de la make:class commande.
artisan make:class -i Bootstrappers/ExceptionsBootstrapper
Cela créera un nouveau ExceptionsBootstrapper classe dans le App\Bootstrappers espace de noms, nous pouvons désormais déplacer les
configurations d'exceptions depuis le bootstrap/app.php fichier vers le ExceptionsBootstrapper classe.
<?php
namespace App\Bootstrappers;
use Illuminate\Foundation\Configuration\Exceptions;
class ExceptionsBootstrapper
{
/**
* Create a new class instance.
*/
public function __construct()
{
//
}
/**
* Invoke the class instance.
*/
public function __invoke(Exceptions $exceptions): void
{
// Exceptions
// More Exceptions
// More and more Exceptions
// ...
}
}
Nous pouvons désormais utiliser le ExceptionsBootstrapper classe dans le bootstrap/app.php fichier.
<?php
use Illuminate\Foundation\Application;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(new App\Bootstrappers\MiddlewareBootstrapper())
->withExceptions(new App\Bootstrappers\ExceptionsBootstrapper())
->create();
Conclusion
Après avoir extrait les configurations du middleware et des exceptions dans des classes distinctes, le bootstrap/app.php Le fichier est désormais
plus épuré et plus facile à maintenir.
Cela facilite également le test des configurations du middleware et des exceptions, car celles-ci constituent désormais des classes distinctes.
Vous remarquez que avec routage Cette méthode aussi ? Je vais expliquer comment extraire les configurations de routage dans une
classe distincte dans le article suivant.
J'espère que cela vous sera utile ; n'hésitez pas à me faire part de vos questions ou suggestions.
Bon codage !