이름에서 알 수 있듯이 미들웨어는 요청 데이터를 가로채서 처리하고, 데이터를 확인한 후, 요청과 응답 간의 논리적 처리를 거쳐 다음 미들웨어로의 진입 허용 여부를 결정합니다.
미들웨어는 프리픽스 미들웨어와 포스트 미들웨어로 구분됩니다. 권한 인증, 로깅 등에 사용할 수 있습니다.
미들웨어는 애플리케이션에 들어오는 HTTP 요청을 필터링하는 편리한 메커니즘을 제공합니다. (추천 학습: 초보부터 마스터까지 PHP 프로그래밍)
예를 들어 Laravel에는 사용자 인증을 확인하기 위한 미들웨어가 내장되어 있습니다. 사용자가 인증되지 않으면 미들웨어는 사용자를 로그인 인터페이스로 리디렉션합니다. 그러나 사용자가 인증되면 미들웨어는 애플리케이션에 대한 추가 요청을 허용합니다.
물론, 신원 인증 외에도 추가적인 미들웨어를 작성하여 다양한 작업을 수행할 수도 있습니다.
예: CORS 미들웨어는 애플리케이션에서 나가는 모든 응답에 적절한 헤더 정보를 추가하는 일을 담당할 수 있으며, 로깅 미들웨어는 애플리케이션으로 들어오는 모든 요청을 기록할 수 있습니다.
Example
<?php // 框架核心应用层 $application = function($name) { echo "this is a {$name} application\n"; }; // 前置校验中间件 $auth = function($handler) { return function($name) use ($handler) { echo "{$name} need a auth middleware\n"; return $handler($name); }; }; // 前置过滤中间件 $filter = function($handler) { return function($name) use ($handler) { echo "{$name} need a filter middleware\n"; return $handler($name); }; }; // 后置日志中间件 $log = function($handler) { return function($name) use ($handler) { $return = $handler($name); echo "{$name} need a log middleware\n"; return $return; }; }; // 中间件栈 $stack = []; // 打包 function pack_middleware($handler, $stack) { foreach (array_reverse($stack) as $key => $middleware) { $handler = $middleware($handler); } return $handler; } // 注册中间件 // 这里用的都是全局中间件,实际应用时还可以为指定路由注册局部中间件 $stack['log'] = $log; $stack['filter'] = $filter; $stack['auth'] = $auth; $run = pack_middleware($application, $stack); $run('Laravle');
출력:
Laravle need a filter middleware Laravle need a auth middleware this is a Laravle application Laravle need a log middleware
패키징 프로그램
미들웨어의 실행 순서는 패키징 기능(pack_middleware)에 의해 결정됩니다. 여기에 반환된 클로저는 실제로 다음과 같습니다.
미들웨어는 특정 사양을 충족해야 합니다. 항상 클로저를 반환하고, 동일한 매개변수가 항상 클로저에 전달되며(메인 로직에 의해 결정됨) 클로저는 항상 핸들러의 실행 결과를 반환합니다. 미들웨어의 로직이 핸들을 반환하기 전에 완료되었습니다. return $handler($name), 이는 사전 미들웨어이고, 그렇지 않으면 사후 미들웨어입니다.
위 내용은 PHP 미들웨어 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!