BaseMiddleware.php 948 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace app\common\middleware;
  3. use app\Request;
  4. use ln\interfaces\MiddlewareInterface;
  5. use think\Response;
  6. abstract class BaseMiddleware implements MiddlewareInterface
  7. {
  8. /**
  9. * @var Request
  10. */
  11. protected $request;
  12. protected $args = [];
  13. abstract public function before(Request $request);
  14. /**
  15. * @param int $num
  16. * @param mixed $default
  17. * @return mixed
  18. * @author xaboy
  19. * @day 2020-04-10
  20. */
  21. public function getArg($num, $default = null)
  22. {
  23. return isset($this->args[$num]) ? $this->args[$num] : $default;
  24. }
  25. final public function handle(Request $request, \Closure $next, ...$args): Response
  26. {
  27. $this->args = $args;
  28. $this->request = $request;
  29. $this->before($request);
  30. $response = $next($request);
  31. $this->after($response);
  32. return $response;
  33. }
  34. abstract public function after(Response $response);
  35. }