Maison  >  Article  >  développement back-end  >  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
WBOYoriginal
2024-06-02 12:01:58865parcourir

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

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

Étape 3 : Enregistrer le middleware

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

// Laravel 8+
Route::middleware(['exception_middleware'])->group(function () {
    // ...
});

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

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

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!

Déclaration:
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