????JFIF??x?x????'
| Server IP : 172.67.174.47 / Your IP : 216.73.216.145 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /././home/tempvsty/pontiacques.org/wp-content/plugins/give/src/Framework/Support/Facades/ |
Upload File : |
<?php
namespace Give\Framework\Support\Facades;
/**
* Class Facade
*
* This class provides a way of taking a normal instance class and creating a static facade out of it. It does it in
* such a way, though, that the facade is still mockable. It does this by instantiating the decorated class through the
* Give Service Container (SC). So by injecting a mock singleton of the decorated class in the SC, it can be mocked.
*
* To use this, simply make a new facade class which extends this once, then implement the getFacadeClass and return the
* class to be decorated, for example: return MyClass::class;
*
* To help the IDE, take the methods from the decorated class and add them your class docblock. So if Repository had an
* insert method, you would add "@method static Model insert()" to the top.
*
* @since 2.12.0
*/
abstract class Facade
{
/**
* Static helper for calling the facade methods
*
* @since 2.12.0
*
* @param string $name
* @param array $arguments
*
* @return mixed
*/
public static function __callStatic($name, $arguments)
{
// Make sure the static class is a singleton and get instance
give()->singletonIf(static::class);
$staticInstance = give(static::class);
// Make sure the accessed class is a singleton and get instance
$accessorClass = $staticInstance->getFacadeAccessor();
give()->singletonIf($accessorClass);
$accessorInstance = give($accessorClass);
return $accessorInstance->$name(...$arguments);
}
/**
* Retrieves the fully qualified class name or alias for the class being decorated
*
* @since 2.12.0
*
* @return string
*/
abstract protected function getFacadeAccessor();
}