ホームページ  >  記事  >  バックエンド開発  >  PHP 例外処理: ミドルウェア例外処理ミドルウェアの使用

PHP 例外処理: ミドルウェア例外処理ミドルウェアの使用

WBOY
WBOYオリジナル
2024-06-02 12:01:58863ブラウズ

PHP 例外処理は、ミドルウェア例外処理ミドルウェアを使用するため、各コントローラーで明示的に例外を処理することなく、アプリケーションの任意の層で例外を処理できるようになります。手順は次のとおりです。 Symfony/error-handler ライブラリをインストールします。ミドルウェア インターフェイスを実装するミドルウェア クラスを作成します。アプリケーションにミドルウェアを登録します。

PHP 例外処理: ミドルウェア例外処理ミドルウェアの使用

PHP 例外処理: ミドルウェア例外処理ミドルウェアの使用

はじめに

例外は、コーディング時に直面しなければならない現実です。 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。