PluginProbe ʕ •ᴥ•ʔ
Kirki – Freeform Page Builder, Website Builder & Customizer / 6.2.5
Kirki – Freeform Page Builder, Website Builder & Customizer v6.2.5
6.3.0 6.2.5 6.2.4 6.2.3 6.2.2 6.2.1 6.2.0 6.1.1 6.1.0 6.0.14 6.0.13 6.0.12 6.0.11 6.0.10 6.0.9 6.0.8 6.0.7 6.0.6 6.0.5 6.0.4 6.0.3 6.0.2 6.0.1 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 4.0.19 4.0.20 4.0.21 4.0.22 4.0.23 4.0.24 4.1 4.2.0 5.0.0 5.1.0 5.1.1 5.2.0 5.2.1 5.2.2 5.2.3 6.0.0 trunk 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.1.0 3.1.1 3.1.2
kirki / libraries / framework / Facade.php
kirki / libraries / framework Last commit date
Collections 2 months ago Concerns 1 month ago Console 1 month ago Constants 3 weeks ago Contracts 3 weeks ago Database 3 weeks ago Discovery 3 weeks ago Exceptions 1 month ago Filesystem 1 month ago Http 2 weeks ago Managers 2 weeks ago Middlewares 2 months ago Polyfill 2 months ago Routing 2 weeks ago Supports 2 weeks ago Validation 4 weeks ago View 1 month ago Wordpress 2 weeks ago ApiExceptionHandler.php 2 months ago Application.php 2 weeks ago Container.php 2 months ago CoreServiceProvider.php 2 weeks ago DTO.php 2 months ago Facade.php 2 months ago Listener.php 1 month ago Resource.php 1 month ago Route.php 2 weeks ago Sanitizer.php 1 month ago ServiceProvider.php 2 months ago SiteExceptionHandler.php 1 month ago helpers.php 2 weeks ago
Facade.php
95 lines
1 <?php
2
3 /**
4 * Abstract base for static facades that proxy calls to container-resolved services.
5 * Caches resolved instances per accessor and forwards __callStatic to the underlying object.
6 * Enables Facade::method() syntax throughout the framework.
7 *
8 * @package Framework
9 * @since 1.0.0
10 */
11 namespace Kirki\Framework;
12
13 \defined('ABSPATH') || exit;
14 use RuntimeException;
15 use function Kirki\Framework\app;
16 abstract class Facade
17 {
18 /**
19 * The array of resolved service instances keyed by accessor name.
20 *
21 * @var array
22 *
23 * @since 1.0.0
24 */
25 protected static $resolved_instance = [];
26 /**
27 * Whether the facade is cacheable.
28 *
29 * @var bool
30 *
31 * @since 1.0.0
32 */
33 protected static $is_cacheable = \true;
34 /**
35 * Get the accessor key for the service in the container.
36 *
37 * Child classes must implement this method to return the string accessor
38 * used to resolve the service from the application container.
39 *
40 * @return string
41 *
42 * @since 1.0.0
43 */
44 public static abstract function get_accessor();
45 /**
46 * Resolve the underlying service instance for the given accessor name.
47 *
48 * If the name is already an object, it is returned directly. Otherwise,
49 * the service is resolved from the application container and cached.
50 *
51 * @param string|object $name The accessor name or an object instance
52 *
53 * @return object The resolved service instance
54 *
55 * @since 1.0.0
56 */
57 protected static function resolved_facade_instance($name)
58 {
59 if (\is_object($name)) {
60 return $name;
61 }
62 if (static::$is_cacheable && isset(static::$resolved_instance[$name])) {
63 return static::$resolved_instance[$name];
64 }
65 $instance = app($name);
66 if (static::$is_cacheable) {
67 static::$resolved_instance[$name] = $instance;
68 }
69 return $instance;
70 }
71 /**
72 * Dynamically handle static method calls to the facade.
73 *
74 * Forwards the static call to the resolved service instance, passing all arguments.
75 * Throws a RuntimeException if the service instance cannot be resolved.
76 *
77 * @param string $method The method name being called
78 * @param array $arguments The arguments passed to the method
79 *
80 * @return mixed The result of the underlying method call
81 *
82 * @throws \RuntimeException
83 *
84 * @since 1.0.0
85 */
86 public static function __callStatic($method, $arguments)
87 {
88 $instance = static::resolved_facade_instance(static::get_accessor());
89 if (!$instance) {
90 throw new RuntimeException('A facade has not been set.');
91 }
92 return $instance->{$method}(...$arguments);
93 }
94 }
95