PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.3
Independent Analytics – WordPress Analytics Plugin v2.15.3
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 3 weeks ago Facades 3 weeks ago Testing 3 weeks ago Traits 3 weeks ago AggregateServiceProvider.php 2 years ago Benchmark.php 3 weeks ago Carbon.php 3 weeks ago Composer.php 3 weeks ago ConfigurationUrlParser.php 3 weeks ago DateFactory.php 3 weeks ago Env.php 3 weeks ago Fluent.php 3 weeks ago HigherOrderTapProxy.php 2 years ago HtmlString.php 2 years ago InteractsWithTime.php 2 years ago Js.php 3 weeks ago Lottery.php 3 weeks ago Manager.php 2 years ago MessageBag.php 3 weeks ago MultipleInstanceManager.php 3 weeks ago NamespacedItemResolver.php 3 weeks ago Optional.php 3 weeks ago Pluralizer.php 3 weeks ago ProcessUtils.php 3 weeks ago Reflector.php 3 weeks ago ServiceProvider.php 2 years ago Str.php 3 weeks ago Stringable.php 3 weeks ago Timebox.php 3 weeks ago ValidatedInput.php 3 weeks ago ViewErrorBag.php 3 weeks ago helpers.php 3 weeks 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