Maison > développement back-end > tutoriel php > Gestion des exceptions PHP : utilisation du middleware de gestion des exceptions Middleware

Gestion des exceptions PHP : utilisation du middleware de gestion des exceptions Middleware

WBOY
Libérer: 2024-06-02 12:01:58
original
888 Les gens l'ont consulté

La gestion des exceptions PHP utilise un middleware de gestion des exceptions Middleware, permettant de gérer les exceptions à n'importe quelle couche de l'application sans avoir à les gérer explicitement dans chaque contrôleur. Les étapes sont les suivantes : Installez la bibliothèque Symfony/error-handler. Créez une classe middleware qui implémente l'interface Middleware. Enregistrez le middleware dans l'application.

Gestion des exceptions PHP : utilisation du middleware de gestion des exceptions Middleware

Gestion des exceptions PHP : utilisation du middleware Middleware de gestion des exceptions

Introduction

Les exceptions sont une réalité à laquelle nous devons faire face lors du codage. En PHP, vous pouvez utiliser try-catch 语句或 set_exception_handler pour gérer les exceptions. Cependant, lorsque l’échelle de l’entreprise augmente, ces deux méthodes deviennent lourdes et difficiles à maintenir. Le middleware de gestion des exceptions fournit un moyen élégant et extensible de gérer les exceptions dans les applications PHP.

Qu’est-ce que le Middleware ?

Le middleware est un morceau de code qui s'exécute entre une requête et une réponse. Il est chargé d’effectuer les actions avant ou après le traitement des demandes. Le middleware de gestion des exceptions nous permet de gérer les exceptions à n'importe quelle couche de l'application sans avoir à les gérer explicitement dans chaque contrôleur ou méthode.

Utiliser la gestion des exceptions du middleware

Étape 1 : Installer

composer require symfony/error-handler
Copier après la connexion

Étape 2 : Créer un middleware

use Symfony\Component\ErrorHandler\Middleware\ErrorMiddleware;

class ExceptionMiddleware
{
    public function __invoke(Request $request, RequestHandler $handler)
    {
        try {
            return $handler->handle($request);
        } catch (\Exception $e) {
            // 处理异常
            return new Response($e->getMessage(), 500);
        }
    }
}
Copier après la connexion

Étape 3 : Enregistrer le middleware

//Slim 4
$app->add(new ExceptionMiddleware());

// Laravel 8+
Route::middleware(['exception_middleware'])->group(function () {
    // ...
});
Copier après la connexion

Cas pratique

Considérons un simple CRUD application. Lors de la création d'un nouvel enregistrement, nous devons renvoyer un message d'erreur si la date saisie n'est pas valide.

// Controller

// ....

try {
    $entity->setDate($request->get('date'));
} catch (InvalidDateFormatException $e) {
    return new Response($e->getMessage(), 400);
}
Copier après la connexion

Grâce au middleware de gestion des exceptions, nous pouvons séparer la gestion des exceptions du contrôleur :

// Middleware

class ExceptionMiddleware
{
    public function __invoke(Request $request, RequestHandler $handler)
    {
        try {
            return $handler->handle($request);
        } catch (InvalidDateFormatException $e) {
            // 处理异常
            return new Response(
                json_encode(['error' => $e->getMessage()]),
                400,
                ['Content-Type' => 'application/json']
            );
        }
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal