BaseMiddleware.php 1023 B

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