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.
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!