> 백엔드 개발 > PHP 튜토리얼 > PHP 예외 처리: 미들웨어 예외 처리 미들웨어 사용

PHP 예외 처리: 미들웨어 예외 처리 미들웨어 사용

WBOY
풀어 주다: 2024-06-02 12:01:58
원래의
879명이 탐색했습니다.

PHP 예외 처리는 미들웨어 예외 처리 미들웨어를 사용하므로 각 컨트롤러에서 명시적으로 처리할 필요 없이 애플리케이션의 모든 계층에서 예외를 처리할 수 있습니다. 단계는 다음과 같습니다. Symfony/error-handler 라이브러리를 설치합니다. 미들웨어 인터페이스를 구현하는 미들웨어 클래스를 만듭니다. 애플리케이션에 미들웨어를 등록합니다.

PHP 예외 처리: 미들웨어 예외 처리 미들웨어 사용

PHP 예외 처리: 미들웨어 사용 예외 처리 미들웨어

소개

예외는 코딩할 때 직면해야 하는 현실입니다. PHP에서는 try-catch 语句或 set_exception_handler를 사용하여 예외를 처리할 수 있습니다. 그러나 비즈니스 규모가 커지면 이 두 가지 방법은 번거롭고 유지 관리가 어려워집니다. 미들웨어 예외 처리 미들웨어는 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 () {
    // ...
});
로그인 후 복사

실습 사례

생각해보자 간단한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿