Hyperf的中间件跟Java中的FilterChain类似,其作用是在调用controller之前对请求对象进行拦截,进行某些操作,再传递给下一个中间件或者直接返回输出响应。如Hyperf手册中所示,中间件是一个洋葱模型,其实现原理就是一个递归调用,代码思路如下:
<?php
interface MiddlewareInterface{
public function process(Response $response,RequestHandler $requestHandler);
}
class Middleware1 implements MiddlewareInterface{
public function process(Response $response,RequestHandler $requestHandler){
echo "Middleware1 before.<br/>";
$requestHandler->handle($response);
echo "Middleware1 after.<br/>";
return $response;
}
}
class Middleware2 implements MiddlewareInterface{
public function process(Response $response,RequestHandler $requestHandler){
echo "Middleware2 before.<br/>";
// 根据具体业务做一些校验
$valid =