ThinkPHP6.0 미들웨어는 시스템 미들웨어와 애플리케이션 미들웨어로 구분됩니다. 시스템 미들웨어는 핵심 프레임워크에 내장된 미들웨어이며, 애플리케이션 미들웨어는 애플리케이션 내에 생성됩니다. .
미들웨어의 주요 애플리케이션 시나리오에는 HTTP 요청의 데이터 필터링, 권한 감지, 요청 차단 및 기타 동작이 포함될 수 있습니다. 미들웨어를 사용하면 컨트롤러 정의가 더 단순해지고 핵심이 아닌 추가 비즈니스 프로세스가 많이 제거될 수 있습니다. .모든 처리는 미들웨어에 넘겨져 실행될 수 있습니다.
미들웨어의 사용 범위 관점에서 보면 글로벌 미들웨어, 애플리케이션 미들웨어, 컨트롤러 미들웨어, 라우팅 미들웨어로 나눌 수 있습니다.
Global middleware
Global 미들웨어는 appmiddleware.php에 정의된 미들웨어입니다. 기본적으로 활성화되는 미들웨어는 없지만 지원되는 시스템 미들웨어입니다. 해당 시스템 미들웨어를 사용하려면 주석만 제거하면 됩니다. 기본 내용은 다음과 같습니다.
return [ // 全局请求缓存 // 'think\middleware\CheckRequestCache', // 多语言加载 // 'think\middleware\LoadLangPack', // Session初始化 // 'think\middleware\SessionInit', // 页面Trace调试 // 'think\middleware\TraceDebug', ];
전역 요청을 포함한 시스템의 일부 기능은 통합 관리를 위해 미들웨어에 넘겨집니다. 캐싱, 다국어 자동 감지 및 로딩, 세션 초기화 및 페이지 추적 디버깅, 즉 기본적으로 설치된 애플리케이션은 세션을 적용하기 전에 전역적으로 세션 초기화 미들웨어를 활성화해야 합니다. API 애플리케이션의 경우 세션 기능 지원이 필요하지 않습니다.
전역 미들웨어 정의 파일에 애플리케이션 미들웨어를 추가할 수 있지만 시스템 미들웨어가 먼저 실행되는지 확인하세요. 미들웨어 정의는 전체 클래스 이름을 사용해야 합니다. 이는 다음을 통해 수행할 수 있습니다. 명령줄 명령 애플리케이션 미들웨어를 빠르게 생성합니다:
php think make:middleware Test
은 다음 내용으로 appmiddlewareTest 미들웨어 클래스를 자동으로 생성합니다:
<?php namespace app\middleware; class Test { public function handle($request, \Closure $next) { } }
또한 전체 네임스페이스를 지정하여 미들웨어 클래스 생성을 지원합니다. .
php think make:middleware app\middleware\Hello
테스트 출력을 추가합니다.
<?php namespace app\middleware; class Test { public function handle($request, \Closure $next) { echo 'Before Middleware<br/>'; $response = $next($request); echo 'After Middleware<br/>'; return $response; } }
미들웨어 핸들 메서드의 반환 값은 Response 객체여야 합니다.
그런 다음 전역 미들웨어 정의에
return [ \app\middleware\Test::class, ];
을 추가합니다. 우리가 액세스하려는 컨트롤러 메서드는
<?php namespace app\controller; class Index { public function hello() { return 'Hello,ThinkPHP!<br/>'; } }
작업 메서드 액세스의 출력입니다.
Before Middleware Hello,ThinkPHP! After Middleware
미들웨어의 실행 과정을 보면, pre-middleware와 post-middleware로 나눌 수 있습니다. 물론 미들웨어에는 pre-middleware와 post-middleware가 있을 수도 있습니다. 프로세스 동작. 위의 테스트 미들웨어는 다음과 같습니다. $next($request) 앞의 코드는 pre-middleware 범주에 속하고, 뒤의 코드는 post-middleware 범주에 속합니다.
Application middleware
다중 애플리케이션 모드인 경우 애플리케이션 미들웨어는 앱 애플리케이션 이름 middleware.php에 정의된 미들웨어입니다. 는 이 애플리케이션에서만 유효하며 정의 형식은 글로벌 미들웨어와 일치합니다.
라우팅 미들웨어
라우팅 미들웨어는 특정 미들웨어가 경로가 일치한 후에만 실행되며 경로 정의에 사용된다는 의미입니다. 미들웨어 메서드 정의(예:
Route::get('hello/:name','index/hello') ->middleware(\app\middleware\Hello::class);
경로 그룹화를 위한 미들웨어를 정의할 수 있습니다
Route::group(function(){ Route::get('hello/:name','index/hello'); //... })->middleware(\app\middleware\Hello::class);
여러 미들웨어를 실행하려면
Route::group(function(){ Route::get('hello/:name','index/hello'); //... })->middleware([\app\middleware\Hello::class,\app\middleware\Check::class]);#🎜를 사용할 수 있습니다. 🎜# 자주 사용되는 미들웨어의 경우 별칭을 정의할 수 있습니다. configmiddleware.php 구성 파일에서
return [ 'hello'=>\app\middleware\Hello::class, 'check'=>\app\middleware\Check::class, ];라우팅 정의를
Route::group(function(){ Route::get('hello/:name','index/hello'); //... })->middleware(['hello','check']);으로 변경할 수 있습니다. one 그룹 미들웨어 정의 별칭
return [ 'test'=>[\app\middleware\Hello::class,\app\middleware\Check::class], ];The Route 정의는
Route::group(function(){ Route::get('hello/:name','index/hello'); //... })->middleware('test');으로 변경할 수 있습니다. 미들웨어는 매개변수 전달을 지원하며 미들웨어 정의는 다음과 같습니다. #🎜🎜 #
<?php namespace app\middleware; class Hello { public function handle($request, \Closure $next, string $name = '') { echo 'Hello'. $name . '<br/>'; return $next($request); } }
라우팅 미들웨어의 두 번째 매개변수에 이름 매개변수를 전달할 수 있습니다.
Route::get('hello/:name','index/hello') ->middleware('hello', 'middleware');
지원 매개변수 외에도 미들웨어의 핸들 메소드에서 종속성 주입을 사용할 수 있습니다.
컨트롤러 미들웨어컨트롤러 미들웨어는 특정 컨트롤러에 액세스할 때만 적용됩니다.
<?php namespace app\controller; class Hello { protected $middleware = ['hello','check']; public function index() { return 'Hello,ThinkPHP!<br/>'; } }#🎜🎜 #미들웨어 별칭은 이전에 정의된 별칭 정의는 여기에서 직접 사용됩니다. 그렇지 않으면 전체 네임스페이스 정의를 사용해야 합니다. 기본적으로 컨트롤러에 정의된 미들웨어가 컨트롤러에 액세스하는 모든 작업이 실행됩니다. 때로는 모든 작업이 미들웨어를 실행하지 않아도 되는 경우가 있습니다. 실행을 정의하는 방법에는 두 가지가 있습니다. 서버 미들웨어 필터링.
<?php namespace app\controller; class Index { protected $middleware = [ 'hello' => ['only' => ['hello']], 'check' => ['except'=> ['hello']], ]; public function hello() { return 'Hello,ThinkPHP!<br/>'; } public function check() { return 'this action require check!<br/>'; } }hello 미들웨어는 Index 컨트롤러의 hello 연산이 실행될 때만 실행되며, hello 메소드를 제외한 check 미들웨어는 실제로 구체적인 효과를 테스트해 볼 수 있습니다.
미들웨어 전달 매개변수
미들웨어와 컨트롤러 간에 매개변수를 전달하는 방법에는 여러 가지가 있습니다. 간단한 방법은 매개변수 전달 요청을 사용하는 것입니다.
<?php namespace app\middleware; class Hello { public function handle($request, \Closure $next) { $request->hello = 'ThinkPHP'; return $next($request); } }미들웨어의 컨트롤러로의 매개변수 전송은 프런트엔드 미들웨어에서 완료되어야 합니다. 컨트롤러는 포스트 미들웨어가 컨트롤러로 전달한 매개변수를 받을 수 없습니다. 그런 다음 컨트롤러 메서드에서 직접 사용할 수 있습니다.
public function index(Request $request) { return $request->hello; // ThinkPHP }Many
ThinkPHP 튜토리얼
동영상은 모두 PHP 중국어 웹사이트에서 볼 수 있습니다. 온라인으로 배워보세요!이 기사는 다음에서 복제되었습니다: https://www.php.cn/phpkj/thinkphp/
위 내용은 한 기사에서 ThinkPHP6.0의 미들웨어에 대해 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

CodeIgniter中间件:加速应用程序的响应速度和页面渲染概述:随着网络应用程序的复杂性和交互性不断增长,开发人员需要使用更加高效和可扩展的解决方案来提高应用程序的性能和响应速度。CodeIgniter(CI)是一种基于PHP的轻量级框架,提供了许多有用的功能,其中之一就是中间件。中间件是在请求到达控制器之前或之后执行的一系列任务。这篇文章将介绍如何使用

使用Slim框架中间件实现国际短信发送和接收功能在现代社会中,短信已成为人们日常生活中重要的沟通工具之一。而随着国际交流的增加,国际短信发送和接收功能也日益受到重视。本文将介绍如何使用Slim框架中间件来实现国际短信发送和接收的功能。Slim是一个轻量级的PHP微框架,它提供了简单而强大的路由功能,非常适合用于快速开发小型API应用。同时,Slim也支持使用

使用Slim框架中间件实现二维码生成和扫描的功能简介:在现代社会,二维码已经成为广泛应用的一种信息传递方式。许多应用程序和网站都提供了二维码的生成和扫描功能。本文将介绍如何使用Slim框架的中间件来实现二维码的生成和扫描功能。安装Slim框架:首先,我们需要安装Slim框架。在终端中执行以下命令:composerrequireslim/slim生成二维码

Laravel中间件:为应用程序添加数据库查询和性能监控导言:在开发Web应用程序时,数据查询和性能监控是非常重要的。Laravel提供了一种方便的方式来处理这些需求,即中间件。中间件是在请求和响应之间进行处理的一种技术,它可以在请求到达控制器之前或响应返回给用户之后执行一些逻辑。本文将介绍如何使用Laravel中间件来实现数据库查询和性能监控。一、创建中间

现在越来越多的企业级应用需要运行在国产化环境中,本文介绍下我们产品使用的中间件在国产操作系统银河麒麟的安装(不一定是最优方式,但能用)。包含;Nginx、Redis、RabbitMQ、MongoDB、dotNETCore。下图是银河麒麟服务器的信息:想要顺利安装需要确保:1、服务器能访问网络。想要完全离线的方式安装会更复杂,需要进一步研究。2、修改yum源。使用vi/etc/yum.repos.d/kylin_aarch64.repo来设置yum源,文件内容如下:###KylinLinuxAdv

Symfony框架中间件:提供错误处理和异常管理功能当我们在开发应用程序时,经常会遇到错误和异常的情况。为了优化用户体验和提供更好的开发者工具,Symfony框架提供了强大的错误处理和异常管理功能。在本文中,我们将介绍Symfony框架中间件的使用和示例代码。Symfony框架中的错误处理和异常管理功能主要通过中间件来实现。中间件是一个特殊的功能组件,用于在

Yii框架中间件:为应用程序提供多重数据存储支持介绍中间件(middleware)是Yii框架中的一个重要概念,它为应用程序提供了多重数据存储支持。中间件的作用类似于一个过滤器,它能够在应用程序的请求和响应之间插入自定义代码。通过中间件,我们可以对请求进行处理、验证、过滤,然后将处理后的结果传递给下一个中间件或最终的处理程序。Yii框架中的中间件使用起来非常

CakePHP中间件:快速构建可扩展的Web应用程序概述:CakePHP是一个流行的PHP框架,被广泛应用于Web应用程序的开发。其提供了许多功能强大的工具和功能,其中包括中间件。中间件可以帮助我们快速构建和扩展Web应用程序,提高代码的可读性和可维护性。什么是中间件:中间件是在请求被派发给控制器之前或之后执行的一系列操作。它们可以完成许多任务,如身份验证、


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

뜨거운 주제



