中间件

路由是整个框架最核心的功能之一,最后执行会根据路由地址操作最终的回调处理,而这个回调处理本身就是一个中间件处理模块之一。

当控制器配置中间件之后,执行会先将配置的中间件全部调用完,最终落地到控制器方法中,由开发者最终处理。

中间件配置

操作步骤仅需三步:

  • 新建中间件
  • 注册中间件到配置文件
  • 添加中间到路由器
  1. <?php
  2. return [
  3. // some code...
  4. /**
  5. * Http middleware
  6. */
  7. 'middleware' => [
  8. 'foo' => Bar::class,
  9. ],
  10. ];

添加到路由中

  1. route()->post('/', 'IndexController@sayHello')->withMiddleware('basic.auth');

自定义中间件

实现自己的中间件,只需要实现小部分代码,就能够完成一个简单的中间件处理。

  1. <?php
  2. namespace FastD\Auth;
  3. use FastD\Middleware\DelegateInterface;
  4. use FastD\Middleware\Middleware;
  5. use Psr\Http\Message\ResponseInterface;
  6. use Psr\Http\Message\ServerRequestInterface;
  7. use FastD\Http\Response;
  8. class BasicAuth extends Middleware
  9. {
  10. /**
  11. * @param ServerRequestInterface $serverRequest
  12. * @param DelegateInterface $delegate
  13. * @return ResponseInterface
  14. */
  15. public function handle(ServerRequestInterface $serverRequest, DelegateInterface $delegate)
  16. {
  17. if (/* logic */ true) {
  18. $delegate->process($serverRequest);
  19. }
  20. return new Response('hello');
  21. }
  22. }

中间件调度中,推荐返回 Psr\Http\Message\ResponseInterface,每个中间件都需要遵循的规定。

实现原理可以参考: PSR15

下一节: 授权