diff --git a/src/Validate/Annotation/Filter.php b/src/Validate/Annotation/Filter.php index 0105bba..bdb4e77 100644 --- a/src/Validate/Annotation/Filter.php +++ b/src/Validate/Annotation/Filter.php @@ -159,13 +159,14 @@ public function build($name) /** - * @param ReflectionClass $reflectionClass + * @param ReflectionClass|string $reflectionClass * @param $values * @return array * @throws DependencyException * @throws \DI\NotFoundException + * @throws \ReflectionException */ - public static function filter(ReflectionClass $reflectionClass, $values) + public static function filter($reflectionClass, $values) { $filterRole = self::buildRole($reflectionClass); if (!empty($filterRole)) { @@ -178,14 +179,21 @@ public static function filter(ReflectionClass $reflectionClass, $values) } /** - * @param ReflectionClass $reflectionClass + * @param ReflectionClass|string $reflectionClass * @return array * @throws DependencyException * @throws \DI\NotFoundException * @throws \DI\DependencyException + * @throws \ReflectionException */ - public static function buildRole(ReflectionClass $reflectionClass) + public static function buildRole($reflectionClass) { + if (is_string($reflectionClass)) { + if (array_key_exists($reflectionClass, self::$cache)) { + return self::$cache[$reflectionClass]; + } + $reflectionClass = new ReflectionClass($reflectionClass); + } if (array_key_exists($reflectionClass->name, self::$cache)) { return self::$cache[$reflectionClass->name]; } diff --git a/src/Validate/Annotation/Validated.php b/src/Validate/Annotation/Validated.php index ef295bf..65e5e0f 100644 --- a/src/Validate/Annotation/Validated.php +++ b/src/Validate/Annotation/Validated.php @@ -314,13 +314,14 @@ public function build($name) } /** - * @param ReflectionClass $reflectionClass + * @param ReflectionClass|string $reflectionClass * @param $values * @throws ValidationException * @throws DependencyException * @throws \DI\NotFoundException + * @throws \ReflectionException */ - public static function valid(ReflectionClass $reflectionClass, $values) + public static function valid($reflectionClass, $values) { $validRole = self::buildRole($reflectionClass); if (!empty($validRole)) { @@ -332,13 +333,20 @@ public static function valid(ReflectionClass $reflectionClass, $values) } /** - * @param ReflectionClass $reflectionClass + * @param ReflectionClass|string $reflectionClass * @return array * @throws DependencyException * @throws \DI\NotFoundException + * @throws \ReflectionException */ - public static function buildRole(ReflectionClass $reflectionClass) + public static function buildRole($reflectionClass) { + if (is_string($reflectionClass)) { + if (array_key_exists($reflectionClass, self::$cache)) { + return self::$cache[$reflectionClass]; + } + $reflectionClass = new ReflectionClass($reflectionClass); + } if (array_key_exists($reflectionClass->name, self::$cache)) { return self::$cache[$reflectionClass->name]; }