Laravel의 미들웨어는 데코레이터 패턴을 사용합니다. 예를 들어 유지 관리 모드, 쿠키 암호화, 열린 세션 등을 확인합니다. 이러한 프로세스 중 일부는 응답 전이고 일부는 응답 후입니다. 데코레이터 모드를 사용하여 기능을 동적으로 줄이거나 추가하면 프레임워크의 확장성이 크게 향상됩니다.
다음은 Session 구현을 유지하기 위해 데코레이터 패턴을 사용하는 간단한 예입니다.
1. 데코레이터 모드를 사용하지 않으며 모듈(WelcomeController::index 메소드)을 수정해야 합니다.
class WelcomeController { public function index() { echo 'session start.', PHP_EOL; echo 'hello!', PHP_EOL; echo 'session close.', PHP_EOL; } }
2. 데코레이터 패턴을 사용합니다. $pipeList는 실행해야 하는 미들웨어 배열을 나타냅니다. 핵심은 array_reduce 함수의 사용에 있습니다.
class WelcomeController { public function index() { echo 'hello!', PHP_EOL; } } interface Middleware { public function handle(Closure $next); } class Seesion implements Middleware { public function handle(Closure $next) { echo 'session start.', PHP_EOL; $next(); echo 'session close.', PHP_EOL; } } $pipeList = [ "Seesion", ]; function _go($step, $className) { return function () use ($step, $className) { $o = new $className(); return $o->handle($step); }; } $go = array_reduce($pipeList, '_go', function () { return call_user_func([new WelcomeController(), 'index']); }); $go();
PHP 관련 지식을 더 보려면 PHP 중국어 웹사이트를 방문하세요!
위 내용은 PHP laravel 요청 처리 파이프라인(데코레이터 패턴)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!