← All changes
|
vendor/php-di/invoker/src/Reflection/CallableReflection.php
+17
-22
3.2
→
3.5.9
View file →
| @@ -1,57 +1,52 @@ | ||
| 1 | -<?php | |
| 1 | +<?php declare(strict_types=1); | |
| 2 | 2 | |
| 3 | 3 | namespace Invoker\Reflection; |
| 4 | 4 | |
| 5 | +use Closure; | |
| 5 | 6 | use Invoker\Exception\NotCallableException; |
| 7 | +use ReflectionException; | |
| 8 | +use ReflectionFunction; | |
| 9 | +use ReflectionFunctionAbstract; | |
| 10 | +use ReflectionMethod; | |
| 6 | 11 | |
| 7 | 12 | /** |
| 8 | - * Create a reflection object from a callable. | |
| 13 | + * Create a reflection object from a callable or a callable-like. | |
| 9 | 14 | * |
| 10 | - * @author Matthieu Napoli <matthieu@mnapoli.fr> | |
| 15 | + * @internal | |
| 11 | 16 | */ |
| 12 | 17 | class CallableReflection |
| 13 | 18 | { |
| 14 | 19 | /** |
| 15 | - * @param callable $callable | |
| 16 | - * | |
| 17 | - * @return \ReflectionFunctionAbstract | |
| 18 | - * | |
| 19 | - * @throws NotCallableException | |
| 20 | - * | |
| 21 | - * TODO Use the `callable` type-hint once support for PHP 5.4 and up. | |
| 20 | + * @param callable|array|string $callable Can be a callable or a callable-like. | |
| 21 | + * @throws NotCallableException|ReflectionException | |
| 22 | 22 | */ |
| 23 | - public static function create($callable) | |
| 23 | + public static function create($callable): ReflectionFunctionAbstract | |
| 24 | 24 | { |
| 25 | 25 | // Closure |
| 26 | - if ($callable instanceof \Closure) { | |
| 27 | - return new \ReflectionFunction($callable); | |
| 26 | + if ($callable instanceof Closure) { | |
| 27 | + return new ReflectionFunction($callable); | |
| 28 | 28 | } |
| 29 | 29 | |
| 30 | 30 | // Array callable |
| 31 | 31 | if (is_array($callable)) { |
| 32 | - list($class, $method) = $callable; | |
| 32 | + [$class, $method] = $callable; | |
| 33 | 33 | |
| 34 | 34 | if (! method_exists($class, $method)) { |
| 35 | 35 | throw NotCallableException::fromInvalidCallable($callable); |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | - return new \ReflectionMethod($class, $method); | |
| 38 | + return new ReflectionMethod($class, $method); | |
| 39 | 39 | } |
| 40 | 40 | |
| 41 | 41 | // Callable object (i.e. implementing __invoke()) |
| 42 | 42 | if (is_object($callable) && method_exists($callable, '__invoke')) { |
| 43 | - return new \ReflectionMethod($callable, '__invoke'); | |
| 43 | + return new ReflectionMethod($callable, '__invoke'); | |
| 44 | 44 | } |
| 45 | 45 | |
| 46 | - // Callable class (i.e. implementing __invoke()) | |
| 47 | - if (is_string($callable) && class_exists($callable) && method_exists($callable, '__invoke')) { | |
| 48 | - return new \ReflectionMethod($callable, '__invoke'); | |
| 49 | - } | |
| 50 | - | |
| 51 | 46 | // Standard function |
| 52 | 47 | if (is_string($callable) && function_exists($callable)) { |
| 53 | - return new \ReflectionFunction($callable); | |
| 48 | + return new ReflectionFunction($callable); | |
| 54 | 49 | } |
| 55 | 50 | |
| 56 | 51 | throw new NotCallableException(sprintf( |
| 57 | 52 | '%s is not a callable', |