PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 3.10.1
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v3.10.1
4.7.2 4.7.1 trunk 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 3.0.0 3.0.1 3.1.0 3.10.0 3.10.1 3.11.1 3.11.2 3.11.3 3.2.0 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.5 3.6.6 3.7.0 3.7.1 3.8.0 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.2.0 4.2.1 4.2.10 4.2.11 4.2.12 4.2.13 4.2.14 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.3.10 4.3.11 4.3.12 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.7.1 4.3.8 4.3.9 4.3.9.1 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.10 4.5.11 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.7.0
cookiebot / addons / lib / ioc / php-di / invoker / src / Reflection / CallableReflection.php
cookiebot / addons / lib / ioc / php-di / invoker / src / Reflection Last commit date
CallableReflection.php 7 years ago
CallableReflection.php
62 lines
1 <?php
2
3 namespace Invoker\Reflection;
4
5 use Invoker\Exception\NotCallableException;
6
7 /**
8 * Create a reflection object from a callable.
9 *
10 * @author Matthieu Napoli <matthieu@mnapoli.fr>
11 */
12 class CallableReflection
13 {
14 /**
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.
22 */
23 public static function create($callable)
24 {
25 // Closure
26 if ($callable instanceof \Closure) {
27 return new \ReflectionFunction($callable);
28 }
29
30 // Array callable
31 if (is_array($callable)) {
32 list($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 // 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 // Standard function
52 if (is_string($callable) && function_exists($callable)) {
53 return new \ReflectionFunction($callable);
54 }
55
56 throw new NotCallableException(sprintf(
57 '%s is not a callable',
58 is_string($callable) ? $callable : 'Instance of ' . get_class($callable)
59 ));
60 }
61 }
62