function (\ReflectionMethod $method, $instance, $self) { $path = $self->value;//uri; $requestMethod = $self->method ?: ['GET']; $RouterCollector = BeanFactory::getBean("RouterCollector"); //var_dump($RouterCollector); $RouterCollector->addRouter($requestMethod, $path, function ($params,$extParams) use ($method, $instance) { $inputParams=[]; $refParams=$method->getParameters(); foreach ($refParams as $refParam){ if(isset($params[$refParam->getName()])){ $inputParams[] = $params[$refParam->getName()]; }else{ foreach($extParams as $extParam){ $type = $refParam->getType(); if ($type instanceof \ReflectionNamedType && !$type->isBuiltin()) { $className = $type->getName(); if(class_exists($className)){ $reflectionClass = new \ReflectionClass($className); if($reflectionClass->isInstance($extParam)){ $inputParams[] = $extParam; goto end; } } } } $inputParams[] = false; } end: } return BeanFactory::getBean(DecoratorCollector::class)->exec($method,$instance,$inputParams); //return $method->invokeArgs($instance,$inputParams); //return $method->invoke($instance);//执行反射方法 }); return $instance; } ];