PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / illuminate / support / Reflector.php
independent-analytics / vendor / illuminate / support Last commit date
Exceptions 1 month ago Facades 1 month ago Testing 1 month ago Traits 1 month ago AggregateServiceProvider.php 2 years ago Benchmark.php 1 month ago Carbon.php 1 month ago Composer.php 1 month ago ConfigurationUrlParser.php 1 month ago DateFactory.php 1 month ago Env.php 1 month ago Fluent.php 1 month ago HigherOrderTapProxy.php 2 years ago HtmlString.php 2 years ago InteractsWithTime.php 2 years ago Js.php 1 month ago Lottery.php 1 month ago Manager.php 2 years ago MessageBag.php 1 month ago MultipleInstanceManager.php 1 month ago NamespacedItemResolver.php 1 month ago Optional.php 1 month ago Pluralizer.php 1 month ago ProcessUtils.php 1 month ago Reflector.php 1 month ago ServiceProvider.php 2 years ago Str.php 1 month ago Stringable.php 1 month ago Timebox.php 1 month ago ValidatedInput.php 1 month ago ViewErrorBag.php 1 month ago helpers.php 1 month ago
Reflector.php
130 lines
1 <?php
2
3 namespace IAWPSCOPED\Illuminate\Support;
4
5 use ReflectionClass;
6 use ReflectionEnum;
7 use ReflectionMethod;
8 use ReflectionNamedType;
9 use ReflectionUnionType;
10 /** @internal */
11 class Reflector
12 {
13 /**
14 * This is a PHP 7.4 compatible implementation of is_callable.
15 *
16 * @param mixed $var
17 * @param bool $syntaxOnly
18 * @return bool
19 */
20 public static function isCallable($var, $syntaxOnly = \false)
21 {
22 if (!\is_array($var)) {
23 return \is_callable($var, $syntaxOnly);
24 }
25 if (!isset($var[0], $var[1]) || !\is_string($var[1] ?? null)) {
26 return \false;
27 }
28 if ($syntaxOnly && (\is_string($var[0]) || \is_object($var[0])) && \is_string($var[1])) {
29 return \true;
30 }
31 $class = \is_object($var[0]) ? \get_class($var[0]) : $var[0];
32 $method = $var[1];
33 if (!\class_exists($class)) {
34 return \false;
35 }
36 if (\method_exists($class, $method)) {
37 return (new ReflectionMethod($class, $method))->isPublic();
38 }
39 if (\is_object($var[0]) && \method_exists($class, '__call')) {
40 return (new ReflectionMethod($class, '__call'))->isPublic();
41 }
42 if (!\is_object($var[0]) && \method_exists($class, '__callStatic')) {
43 return (new ReflectionMethod($class, '__callStatic'))->isPublic();
44 }
45 return \false;
46 }
47 /**
48 * Get the class name of the given parameter's type, if possible.
49 *
50 * @param \ReflectionParameter $parameter
51 * @return string|null
52 */
53 public static function getParameterClassName($parameter)
54 {
55 $type = $parameter->getType();
56 if (!$type instanceof ReflectionNamedType || $type->isBuiltin()) {
57 return;
58 }
59 return static::getTypeName($parameter, $type);
60 }
61 /**
62 * Get the class names of the given parameter's type, including union types.
63 *
64 * @param \ReflectionParameter $parameter
65 * @return array
66 */
67 public static function getParameterClassNames($parameter)
68 {
69 $type = $parameter->getType();
70 if (!$type instanceof ReflectionUnionType) {
71 return \array_filter([static::getParameterClassName($parameter)]);
72 }
73 $unionTypes = [];
74 foreach ($type->getTypes() as $listedType) {
75 if (!$listedType instanceof ReflectionNamedType || $listedType->isBuiltin()) {
76 continue;
77 }
78 $unionTypes[] = static::getTypeName($parameter, $listedType);
79 }
80 return \array_filter($unionTypes);
81 }
82 /**
83 * Get the given type's class name.
84 *
85 * @param \ReflectionParameter $parameter
86 * @param \ReflectionNamedType $type
87 * @return string
88 */
89 protected static function getTypeName($parameter, $type)
90 {
91 $name = $type->getName();
92 if (!\is_null($class = $parameter->getDeclaringClass())) {
93 if ($name === 'self') {
94 return $class->getName();
95 }
96 if ($name === 'parent' && ($parent = $class->getParentClass())) {
97 return $parent->getName();
98 }
99 }
100 return $name;
101 }
102 /**
103 * Determine if the parameter's type is a subclass of the given type.
104 *
105 * @param \ReflectionParameter $parameter
106 * @param string $className
107 * @return bool
108 */
109 public static function isParameterSubclassOf($parameter, $className)
110 {
111 $paramClassName = static::getParameterClassName($parameter);
112 return $paramClassName && (\class_exists($paramClassName) || \interface_exists($paramClassName)) && (new ReflectionClass($paramClassName))->isSubclassOf($className);
113 }
114 /**
115 * Determine if the parameter's type is a Backed Enum with a string backing type.
116 *
117 * @param \ReflectionParameter $parameter
118 * @return bool
119 */
120 public static function isParameterBackedEnumWithStringBackingType($parameter)
121 {
122 $backedEnumClass = (string) $parameter->getType();
123 if (\function_exists('enum_exists') && \enum_exists($backedEnumClass)) {
124 $reflectionBackedEnum = new ReflectionEnum($backedEnumClass);
125 return $reflectionBackedEnum->isBacked() && $reflectionBackedEnum->getBackingType()->getName() == 'string';
126 }
127 return \false;
128 }
129 }
130