玩转中间件处理
<h2>中间件</h2>
<ul>
<li>thinkphp 5.1.6之后引入的思想</li>
<li>中间件主要处理http的一些请求
<ul>
<li>如:过滤,拦截</li>
<li>文件位置:/app/middleware.php</li>
</ul></li>
</ul>
<h2>中间件使用简单实例</h2>
<h4>控制器</h4>
<ul>
<li>/app/admin/controller/Index.php</li>
</ul>
<pre><code class="language-php">namespace app\admin\controller;
use app\BaseController;
use app\Request;
class Index extends BaseController {
/**
* index.php/admin/Index/testMiddle
*/
public function testMiddle() {
dump(2);
echo $this->request->test_type;
}
}</code></pre>
<h4>创建中间件</h4>
<ul>
<li>/app/admin/middleware/Check.php</li>
</ul>
<pre><code class="language-php">namespace app\admin\middleware;
class Check {
/**
* handle方法名是固定写法,不能改变
* @param $request 请求对象
* @param \Closure $next 闭包
*/
public function handle($request, \Closure $next) {
dump(1);
$request->test_type = 'test_type';
return $next($request);
}
/**
* 中间件结束调度
*/
public function end(\think\Response $Response) {
// 如:写一些日志
}
} </code></pre>
<h4>中间件配置</h4>
<ul>
<li>/app/admin/middleware.php</li>
</ul>
<pre><code class="language-php">return [
app\admin\middleware\Check::class,
];</code></pre>