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 / macroable / Traits / Macroable.php
independent-analytics / vendor / illuminate / macroable / Traits Last commit date
Macroable.php 2 years ago
Macroable.php
108 lines
1 <?php
2
3 namespace IAWPSCOPED\Illuminate\Support\Traits;
4
5 use BadMethodCallException;
6 use Closure;
7 use ReflectionClass;
8 use ReflectionMethod;
9 /** @internal */
10 trait Macroable
11 {
12 /**
13 * The registered string macros.
14 *
15 * @var array
16 */
17 protected static $macros = [];
18 /**
19 * Register a custom macro.
20 *
21 * @param string $name
22 * @param object|callable $macro
23 * @return void
24 */
25 public static function macro($name, $macro)
26 {
27 static::$macros[$name] = $macro;
28 }
29 /**
30 * Mix another object into the class.
31 *
32 * @param object $mixin
33 * @param bool $replace
34 * @return void
35 *
36 * @throws \ReflectionException
37 */
38 public static function mixin($mixin, $replace = \true)
39 {
40 $methods = (new ReflectionClass($mixin))->getMethods(ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED);
41 foreach ($methods as $method) {
42 if ($replace || !static::hasMacro($method->name)) {
43 $method->setAccessible(\true);
44 static::macro($method->name, $method->invoke($mixin));
45 }
46 }
47 }
48 /**
49 * Checks if macro is registered.
50 *
51 * @param string $name
52 * @return bool
53 */
54 public static function hasMacro($name)
55 {
56 return isset(static::$macros[$name]);
57 }
58 /**
59 * Flush the existing macros.
60 *
61 * @return void
62 */
63 public static function flushMacros()
64 {
65 static::$macros = [];
66 }
67 /**
68 * Dynamically handle calls to the class.
69 *
70 * @param string $method
71 * @param array $parameters
72 * @return mixed
73 *
74 * @throws \BadMethodCallException
75 */
76 public static function __callStatic($method, $parameters)
77 {
78 if (!static::hasMacro($method)) {
79 throw new BadMethodCallException(\sprintf('Method %s::%s does not exist.', static::class, $method));
80 }
81 $macro = static::$macros[$method];
82 if ($macro instanceof Closure) {
83 $macro = $macro->bindTo(null, static::class);
84 }
85 return $macro(...$parameters);
86 }
87 /**
88 * Dynamically handle calls to the class.
89 *
90 * @param string $method
91 * @param array $parameters
92 * @return mixed
93 *
94 * @throws \BadMethodCallException
95 */
96 public function __call($method, $parameters)
97 {
98 if (!static::hasMacro($method)) {
99 throw new BadMethodCallException(\sprintf('Method %s::%s does not exist.', static::class, $method));
100 }
101 $macro = static::$macros[$method];
102 if ($macro instanceof Closure) {
103 $macro = $macro->bindTo($this, static::class);
104 }
105 return $macro(...$parameters);
106 }
107 }
108