PluginProbe
WPIDE – File Manager & Code Editor / 3.5.9
WPIDE – File Manager & Code Editor v3.5.9
3.5.9 3.5.8 3.5.7 2.0.14 2.0.15 2.0.16 2.0.2 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1 2.2 2.3 2.3.1 2.3.2 2.4.0 2.5 2.6 3.0 3.1 3.2 3.3 All 55 releases
wpide / vendor / php-di / invoker / src / Reflection / CallableReflection.php

CallableReflection.php in WPIDE – File Manager & Code Editor 3.5.9, at vendor/php-di/invoker/src/Reflection/CallableReflection.php

57 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php declare(strict_types=1);
2
3 namespace Invoker\Reflection;
4
5 use Closure;
6 use Invoker\Exception\NotCallableException;
7 use ReflectionException;
8 use ReflectionFunction;
9 use ReflectionFunctionAbstract;
10 use ReflectionMethod;
11
12 /**
13 * Create a reflection object from a callable or a callable-like.
14 *
15 * @internal
16 */
17 class CallableReflection
18 {
19 /**
20 * @param callable|array|string $callable Can be a callable or a callable-like.
21 * @throws NotCallableException|ReflectionException
22 */
23 public static function create($callable): ReflectionFunctionAbstract
24 {
25 // Closure
26 if ($callable instanceof Closure) {
27 return new ReflectionFunction($callable);
28 }
29
30 // Array callable
31 if (is_array($callable)) {
32 [$class, $method] = $callable;
33
34 if (! method_exists($class, $method)) {
35 throw NotCallableException::fromInvalidCallable($callable);
36 }
37
38 return new ReflectionMethod($class, $method);
39 }
40
41 // Callable object (i.e. implementing __invoke())
42 if (is_object($callable) && method_exists($callable, '__invoke')) {
43 return new ReflectionMethod($callable, '__invoke');
44 }
45
46 // Standard function
47 if (is_string($callable) && function_exists($callable)) {
48 return new ReflectionFunction($callable);
49 }
50
51 throw new NotCallableException(sprintf(
52 '%s is not a callable',
53 is_string($callable) ? $callable : 'Instance of ' . get_class($callable)
54 ));
55 }
56 }
57