PHP 例外処理は、ミドルウェア例外処理ミドルウェアを使用するため、各コントローラーで明示的に例外を処理することなく、アプリケーションの任意の層で例外を処理できるようになります。手順は次のとおりです。 Symfony/error-handler ライブラリをインストールします。ミドルウェア インターフェイスを実装するミドルウェア クラスを作成します。アプリケーションにミドルウェアを登録します。
はじめに
例外は、コーディング時に直面しなければならない現実です。 PHP では、try-catch
语句或 set_exception_handler
を使用して例外を処理できます。しかし、ビジネス規模が大きくなると、これら 2 つの方法は煩雑になり、維持するのが難しくなります。ミドルウェア 例外処理ミドルウェアは、PHP アプリケーションで例外を処理するための洗練された拡張可能な方法を提供します。
ミドルウェアとは何ですか?
ミドルウェアは、リクエストとレスポンスの間に実行されるコードの一部です。リクエスト処理の前後にアクションを実行する責任があります。例外処理ミドルウェアを使用すると、すべてのコントローラーやメソッドで明示的に例外を処理しなくても、アプリケーションの任意の層で例外を処理できます。
ミドルウェア例外処理を使用する
ステップ 1: インストール
composer require symfony/error-handler
ステップ 2: ミドルウェアを作成する
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); } } }
ステップ 3: ミドルウェアを登録する
//Slim 4 $app->add(new ExceptionMiddleware()); // Laravel 8+ Route::middleware(['exception_middleware'])->group(function () { // ... });
実践的なケース
考えてみましょうAシンプルな CRUD アプリケーション。新しいレコードを作成するとき、入力された日付が無効な場合はエラー メッセージを返す必要があります。
// Controller // .... try { $entity->setDate($request->get('date')); } catch (InvalidDateFormatException $e) { return new Response($e->getMessage(), 400); }
例外処理ミドルウェアを使用すると、例外処理をコントローラーから分離できます:
// 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'] ); } } }
以上がPHP 例外処理: ミドルウェア例外処理ミドルウェアの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。