From d56f9d6e6ec78591e9747d665f82eb1b2c11e0ab Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 13 Aug 2022 22:04:05 +0800 Subject: [PATCH] fix param for annotation handler --- src/ZM/Annotation/AnnotationHandler.php | 4 ++-- src/ZM/Middleware/MiddlewareHandler.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ZM/Annotation/AnnotationHandler.php b/src/ZM/Annotation/AnnotationHandler.php index 2d07c0ba..9a293171 100644 --- a/src/ZM/Annotation/AnnotationHandler.php +++ b/src/ZM/Annotation/AnnotationHandler.php @@ -126,7 +126,7 @@ class AnnotationHandler * @throws InterruptException * @throws Throwable */ - public function handle(AnnotationBase $v, ?callable $rule_callback = null): bool + public function handle(AnnotationBase $v, ?callable $rule_callback = null, ...$args): bool { // 由于3.0有额外的插件模式支持,所以注解就不再提供独立的闭包函数调用支持了 // 提取要调用的目标类和方法名称 @@ -139,7 +139,7 @@ class AnnotationHandler } $callback = [$target_class, $target_method]; try { - $this->return_val = middleware()->process($callback); + $this->return_val = middleware()->process($callback, ...$args); } catch (InterruptException $e) { // 这里直接抛出这个异常的目的就是给上层handleAll()捕获 throw $e; diff --git a/src/ZM/Middleware/MiddlewareHandler.php b/src/ZM/Middleware/MiddlewareHandler.php index ca7fac2a..b1c2b0d2 100644 --- a/src/ZM/Middleware/MiddlewareHandler.php +++ b/src/ZM/Middleware/MiddlewareHandler.php @@ -137,7 +137,7 @@ class MiddlewareHandler * @throws InvalidArgumentException * @throws Throwable */ - public function process(callable $callback) + public function process(callable $callback, ...$args) { $stack_id = $this->getStackId($callback); unset($this->stack[$stack_id]); @@ -147,7 +147,7 @@ class MiddlewareHandler // 遍历执行before并压栈,并在遇到返回false后停止 try { $mid_list = ($this->reg_map[$stack_id] ?? []); - $final_result = ($this->getPipeClosure($callback, $stack_id))($mid_list); + $final_result = ($this->getPipeClosure($callback, $stack_id))($mid_list, ...$args); } finally { array_pop($this->callable_stack); }