OwlCyberSecurity - MANAGER
Edit File: Facade.php
<?php namespace LottaFramework\Facades; use LottaFramework\Container\Container; /** * Taken and modified from: https://github.com/illuminate/support */ abstract class Facade { /** * The application instance being facade. * * @var Container */ protected static $app; /** * The resolved object instances. * * @var array */ protected static $resolvedInstance; /** * Indicates if the resolved instance should be cached. * * @var bool */ protected static $cached = true; /** * Run a Closure when the facade has been resolved. * * @param \Closure $callback * * @return void */ public static function resolved( \Closure $callback ) { $accessor = static::getFacadeAccessor(); if ( static::$app->resolved( $accessor ) === true ) { $callback( static::getFacadeRoot() ); } static::$app->afterResolving( $accessor, function ( $service ) use ( $callback ) { $callback( $service ); } ); } /** * Get the registered name of the component. * * @return string * * @throws \RuntimeException */ protected static function getFacadeAccessor() { throw new \RuntimeException( 'Facade does not implement getFacadeAccessor method.' ); } /** * Get the root object behind the facade. * * @return mixed */ public static function getFacadeRoot() { return static::resolveFacadeInstance( static::getFacadeAccessor() ); } /** * Resolve the facade root instance from the container. * * @param string $name * * @return mixed */ protected static function resolveFacadeInstance( $name ) { if ( isset( static::$resolvedInstance[ $name ] ) ) { return static::$resolvedInstance[ $name ]; } if ( static::$app ) { if ( static::$cached ) { return static::$resolvedInstance[ $name ] = static::$app[ $name ]; } return static::$app[ $name ]; } } /** * Clear a resolved facade instance. * * @param string $name * * @return void */ public static function clearResolvedInstance( $name ) { unset( static::$resolvedInstance[ $name ] ); } /** * Clear all of the resolved instances. * * @return void */ public static function clearResolvedInstances() { static::$resolvedInstance = []; } /** * Set the application instance. * * @param Container $app * * @return void */ public static function setFacadeApplication( $app ) { static::$app = $app; } /** * Handle dynamic, static calls to the object. * * @param string $method * @param array $args * * @return mixed * * @throws \RuntimeException */ public static function __callStatic( $method, $args ) { $instance = static::getFacadeRoot(); if ( ! $instance ) { throw new \RuntimeException( 'A facade root has not been set.' ); } return $instance->$method( ...$args ); } }