http://www.framca.com

【分分pk10】thinkphp中间件是什么-ThinkPHP

ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。

thinkphp中间件是什么?

从5.1.6+版本开始,正式引入中间件的支持。

中间件主要用于拦截或过滤应用的HTTP请求,并进行必要的业务处理。

定义中间件

可以通过命[令行指令快速生成中间件

php think make:middleware Check

这个指令会 applic(ation/http/middleware目录下面生成一个Check中间件。

<?phpnamespace app\http\middleware;class Check{    public function handle($request, \Closure $next)    {        if ($request->param('name') == 'think') {            return redirect('index/think');        }        return $next($request);    }}

中间件的入口执行方法必须是handle方法,而且第一个参数是Request对象,第二个参数是一个闭包。

中间件handle方法的返回值必须是一个Response对象。

在这个中间件中我们判断当前请求的name参数等于think的时候进行重定向处理。否则,请求将进一步传递到应用中。要让请求继续传递到应用程序中,只需使用 $request 作为参数去调用回调函数 $next 。

在某些需求下,可以使用第三个参数传入额外的参数。

<?phpnamespace app\http\middleware;class Check{    public function handle($request, \Closure $next, $name)    {        if ($name == 'think') {            return redirect('index/think');        }        return $next($request);    }}

前置/后置中间件

中间件是在请求具体的操作之前还是之后执行,完全取决于中间件的定义本身。

下面是一个前置行为的中间件

<?phpnamespace app\http\middleware;class Before{    public function handle($request, \Closure $next)    {        // 添加中间件执行代码        return $next($request);    }}

下面是一个后置行为的中间件

<?phpnamespace app\http\middleware;class After{    public function handle($request, \Closure $next)    {$response = $next($request);        // 添加中间件执行代码        return $response;    }}

来个比较实际的例子,我们需要判断当前浏览器环境是在微信或支付宝

namespace app\http\middleware;/** * 访问环境检查,是否是微信或支付宝等 */class InAppCheck{    public function handle($request, \Closure $next)    {        if (preg_match('~micromessenger~i', $request->header('user-agent'))) {            $request->InApp = 'WeChat';        } else if (preg_match('~alipay~i', $request->header('user-agent'))) {            $request->InApp = 'Alipay';        }        return $next($request);    }}
                

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

上一篇:javascript初级视频教程-免费在线视频教程-php中文网
下一篇:没有了