php实现中间件6,说一说ThinkPHP6中五花八门的中间件_PHP开发框架教程

thinkphp配置配置多应用多配置的方法_PHP开发框架教程

一般的thinkphp框架一般都是单模块开发的,但有时候我们可能需要进行多模块开发,本文就来为大家介绍一下thinkphp配置多模块、多应用的方法。在ThinkPHP6中新增中间件功能,而且中间件又分很多类型的中间件,很多新手对ThinkPHP6中间件很犯难,下面就给大家分别介绍下。

全局中间件:

我们下载好ThinkPHP6的框架后,在app目录下就有一个middleware.php,我们在app目录下定义的中间件叫做全局中间件,全局中间件是对所有应用都生效的中间件。

应用中间件:

那换而言之,如果我们再复制一份middleware.php放在了某个应用下,比如index应用,是不是就叫做应用中间件呢,答案是对的。

控制器中间件:

如果在控制器中操作中间件,是不是就叫做控制器中间件?

路由中间件:

那可不可以在路由中也定义中间件,比如我只想让某个请求使用某个中间件,其他的并不想使用中间件,那也就有了路由中间件。

如果同一个请求,所有类型的中间件都定义了,那执行顺序是如何呢?

全局中间件->应用中间件->路由中间件->控制器中间件

接下来我们看一个实例。

全局中间件:如何大型 Laravel 项目中组织路由_PHP开发框架教程

想象一下一个拥有 100 多个路由的 Laravel 项目,其中包括访客,用户,管理员等分离的模块。你真的要将所有内容写在在一个文件中吗?那么如何将它们分组,并且为 URL 添加前缀呢?看看有哪些办法。

public function handle($request, \Closure $next)

{

echo 'app全局中间件';

return $next($request);

}

应用中间件:

public function handle($request, \Closure $next)

{

echo '应用中间件';

return $next($request);

}

路由中间件:

Route::rule('hello','index/hello')

->middleware(\app\middleware\Auth::class);

控制器中间件:

在使用控制器中间件之前,我们先定义好别名,在根目录下config\middleware.php中定义别名。这个别名其实就是增加别名标识。别名定义好后,不仅在控制器中间件可以使用,路由中间件也可以使用。

return [

'alias' => [

'auth1' => app\middleware\Auth1::class,

],

];

我们在这里定义别名中间件,就不需要在middleware.php中声明了,而是通过在控制中使用别名定义:

class Index

{

protected $middleware = ['auth1'];

public function index()

{

return 'index';

}

public function hello()

{

echo 'hello方法';

}

}

这个时候我们访问hello方法,输出结果是:

app全局中间件

应用中间件

路由中间件

控制器中间件

hello方法

以上就是ThinkPHP6各种中间件的介绍,其实各种中间件并不难理解,主要在于它们之间的执行顺序需要大家明确。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle怎么格式化sql语句,Oracle sqlplus格式化数据

SQL>set colsep ;     //-域输出分隔符SQL>set newp none //设置查询出来的数据分多少页显示,如果需要连续的数据,中间不要出现空行就把newp设置为none,这样输出的数据行都是连续的,中间没有空行之类的SQL&g…

使用Java迭代器修改数据时要小心

随着本学期的结束,我想我会分享一个关于我对Java迭代器非常非常熟悉的小故事。 现实世界语境 就上下文而言,我教第二年的软件组件课程,这是尝试进入该专业的学生的最后障碍。 当然,这门课程对学生来说压力很大,我经常…

oracle添加表的索引,oracle批量添加指定表前缀的索引SQL语句

oracle批量添加指定表前缀的索引SQL语句需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀##需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀declare--用户名userNa…

javafx隐藏_JavaFX技巧14:StackPane子项-隐藏但不消失

javafx隐藏另一个简短提示:Swing提供了一个名为CardLayout的布局管理器,该管理器管理容器内的一组组件(卡),但始终仅显示其中一个。 方法CardLayout.show(Container ,String)允许在组…

oracle yyyy和yy,Oracle PL / SQL:SYSDATE与’DD-MMM-YY’的区别?

在Oracle中,DATE值 – 尽管名称 – 也包含时间部分. SYSDATE包含当前日期和当前时间(最多秒).默认情况下,Oracle工具(愚蠢地)隐藏DATE值的时间部分.如果您运行:select to_char(sysdate,yyyy-mm-dd hh24:mi:ss) as sysdatefrom dual;你可以看到.所以SYSDATE可能是201…

维持硒测试自动化的完美方法

毫无疑问, 自动浏览器测试已经改变了软件开发的工作方式。 如果不是Selenium,我们将无法像我们一样使用各种各样的无错误Web应用程序。 但是有时,甚至IT部门也误解了自动化一词。 大多数人认为计算机将为他们完成所有测试! 他们最…

oracle42997,oracle与db2的比较

在DB2中从客户端访问服务器端的数据库时,不能直接用connect命令,而必须先建立通信node,再在node的基础上建立数据库连接。在命令行的具体操作如下:->db2 catalog tcpip node ABC remote serverName server 50000->db2 catal…

双色球霸主网络问题_霸主–统治和管理API的地方

双色球霸主网络问题今天我们生活在一个越来越分散的世界中。 如今的计算机系统不再是在随机桌子下面的某些硬件上运行单个部门项目,而是大规模,集中甚至分散地运行。 监视和管理的需求从未改变,但是随着时间的推移变得越来越复杂。 如果将所有…

php验证码 php中文网,ThinkPHP 使用不同风格及中文的验证码

使用其他风格验证码在上文《ThinkPHP 验证码详解及实例》中了解了 ThinkPHP 验证码的具体用法,本文将进一步介绍如何使用不同风格的验证码以及使用中文验证码。上文例子使用的是默认参数,也就是生成 4 位的数字验证码。buildImageVerify 方法生成验证码时…

Spring Boot端口从默认更改为自定义或新端口

更改Spring Boot应用程序端口的快速指南。 application.properties文件和yml文件中的server.port属性的示例。 以及从命令行参数 SpringBootApplication,WebServerFactoryCustomizer 1.简介 在本教程中,您将学习如何在Spring Boot应用程序中更改端口。 …

java 开发人员工具_Java开发人员应该知道的5种错误跟踪工具

java 开发人员工具随着Java生态系统的发展,可满足不断增长的请求和用户对高性能需求的Web应用程序成为了新型的现代开发工具。 具有快速新部署的快速节奏环境需要跟踪错误,并以传统方法无法维持的水平获得对应用程序行为的洞察力。 在本文中,…

oracle定时关闭job,Oracle 定时JOB

讲一下Oracle创建临时job小窍门,创建Oracle临时JOB是为了临时执行调用过程或者函数,只调用一次。1、创建Oracle临时jobdeclareVJOB number;beginsys.dbms_job.submit(VJOB,‘PKG_RULECALL.MAKE_ALL_SAMPLE_BY_MONTH_WTH(‘‘201701‘‘,NULL);‘,Sysdat…

Apache Camel 3.2 – Camel的无反射配置

在Apache Camel项目中,我们正在努力开发下一个即将发布的下一个Apache Camel 3.2.0版本。 我们在Camel 3中努力研究的问题之一就是使其变得更小,更快。 其中一个方面是配置管理。 您可以按照12要素原则以多种方式完全配置Camel,以使配置与应…

oracle dbwr trace文件,ORA-01157: cannot identify/lock data file 19 - see DBWR trace file问题处理...

ORA-01157: cannot identify/lock data file 19 - see DBWR trace file问题处理告警信息:ORA-01157: cannot identify/lock data file 19 - see DBWR trace fileORA-01110: data file 19: /app/Oracle/oradata/users02.dbfORA-27037: unable to obtain file statusS…

java jsoup解析_3使用Jsoup解析Java中HTML文件的示例

java jsoup解析HTML是Web的核心,无论您是通过JavaScript,JSP,PHP,ASP或任何其他Web技术动态生成的,您在Internet上看到的所有页面都是基于HTML的。 您的浏览器实际上是解析HTML并为您呈现它。 但是,如果需要…

linux 命令解码空格,Shell 编程:Bash空格的那点事

先了解下bash中什么时候该用空格,什么时候不该用。1. 等号赋值两边不能有空格2. 命令与选项之间需要空格3. 管道两边空格可有可无我们来看看常见的问题1. 赋值时等号两边或者只有左边多了空格igigentoo ~ $ var1 testbash: var1: command not foundigigentoo ~ $ e…

使用类似Lambda的语法切换为Java中的表达式

从Java 14开始, switch表达式具有额外的Lambda式 ( case ... -> labels )语法,它不仅可以用作语句,还可以用作计算为单个值的表达式。 使用新的类似Lambda的语法,如果标签匹配,则仅执行箭头…

配置linux系统ip,Linux系统IP地址配置

命令临时配置ifconfig [Network card name] 10.50.6.16 netmask 255.255.254.0或者ip addr add 10.50.6.200/23 dev [Network card name]router add default gw 10.50.6.1 #添加默认路由重启后失效ip addr add命令添加的IP地址需要使用 ip a show [Network card name]命令查看例…

【AI提示词艺术】第12期 摄影艺术构图处理和人像生成的技巧

摄影艺术构图 星空宇宙 关键词: 强烈的明暗对比,8k,精细的描述,相片纸,超高分辨率,无建筑的,大自然,星空,云朵,刺眼流星,群星,银河,仰视视角,广角镜头 以下是按照提示词类别整理的相关描述&a…

超音速亚原子Enterprise Java

我创建了一个视频,其中用Quarkus(用于现代Java应用程序的运行时)解释“超音速亚原子Java”。 无论您是刚开始涉足Enterprise Java领域,还是已经是一位经验丰富的Java EE / J2EE开发人员,本课程都将指导您如何在2020年构…