PHP Middleware는 클라이언트 요청을 처리하기 전에 응용 프로그램에 추가 로직을 삽입하는 일반적인 메커니즘입니다. 미들웨어를 통해 개발자는 요청 검증, 로깅 및 요청 처리 프로세스의 기타 기능과 같은 맞춤형 작업을 유연하게 추가 할 수 있습니다. 이 기사는 PHP 미들웨어의 구현 원리를 자세히 소개합니다.
요청이 PHP 응용 프로그램에 도착하면 일련의 미들웨어를 통해 처리됩니다. 각 미들웨어는 요청을 확인하거나 요청 컨텐츠를 수정하거나 응답을 직접 반환 할 기회가 있습니다. 미들웨어가 응답을 반환하면 요청의 수명주기가 끝나고 후속 미들웨어는 계속 실행되지 않습니다.
미들웨어 클래스는 미들웨어 인터페이스 인터페이스를 구현해야합니다. 이 인터페이스는 두 가지 주요 방법 인 Process () 와 setnext ()를 정의합니다.
Process () 메소드는 요청을 처리하는 데 도움이되며 ServerRequestInterface 및 requestHandlerInterface 객체의 두 가지 매개 변수를 수신합니다. ServerRequestInterface 에는 요청에 대한 자세한 정보가 포함되어 있으며 RequestHandlerInterface는 다음 미들웨어 또는 응용 프로그램의 콜백 기능입니다. 이 방법을 통해 미들웨어는 요청 컨텐츠를 수정하거나 응답을 반환하거나 다음 미들웨어로 요청을 넘겨 처리를 계속할 수 있습니다.
setNext () 메소드는 다음 실행 미들웨어를 지정하는 데 사용됩니다. 다음 미들웨어가 지정되지 않으면 처리가 응용 프로그램에 직접 전달됩니다.
미들웨어는 체인 구조를 통해 연결되며 각 미들웨어는 다음 미들웨어의 프로세스 () 메소드를 호출합니다. 이 체인 구조를 통해 요청을 여러 미들웨어로 처리 할 수 있으며, 각각의 요청 수명주기의 다른 단계에서 개입합니다.
모든 미들웨어가 요청을 처리하면 최종 응용 프로그램 코드가 실행됩니다. 일반적으로 응답을 생성하고 클라이언트에게 반환하는 책임이 있습니다.
다음은 요청에 사용자 정의 헤더를 추가하는 간단한 PHP 미들웨어 예제입니다.
<span class="fun">클래스 addHeaderMiddleware 구현 미들웨어 인터페이스 {public function process (serverRequestInterface $ request, requestHandlerInterface $ handler) {$ request = $ request-> withaddedHeader ( 'x-custom-header', 'my value'); 반환 $ handler-> handle ($ request); }}</span>
위의 코드에서 AddHeaderMiddleware 클래스는 MiddlewareInterface 인터페이스를 구현하고 'x-custom-header'라는 사용자 정의 헤더를 Process () 메소드의 요청에 추가합니다. 그런 다음 $ handler-> handle () 을 호출하여 수정 된 요청을 다음 미들웨어 또는 응용 프로그램으로 전달합니다.
PHP 미들웨어 메커니즘은 개발자에게 유연한 요청 처리 방법을 제공합니다. MiddlewareInterface 인터페이스를 구현함으로써 개발자는 요청 수명주기의 다양한 단계에서 사용자 정의 로직을 쉽게 삽입 할 수 있습니다. 미들웨어 체인의 설계를 통해 여러 미들웨어가 복잡한 요청 처리 작업을 완료하기 위해 순서대로 협력 할 수 있습니다.