PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 6.1.0
Defender Security – Malware Scanner, Login Security & Firewall v6.1.0
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / lib / packages / Invoker / Reflection / CallableReflection.php

CallableReflection.php in Defender Security – Malware Scanner, Login Security & Firewall 6.1.0, at lib/packages/Invoker/Reflection/CallableReflection.php

57 lines 1.6 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 WPMU_DEV\Defender\Vendor\Invoker\Reflection;
4
5 use Closure;
6 use WPMU_DEV\Defender\Vendor\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