Как работают фасады в Laravel? Как получить доступ к методам с помощью::
Я читал о Фасадной Выкройке
Шаблон фасада (также пишется как фасад) - это шаблон проектирования программного обеспечения, обычно используемый в объектно-ориентированном программировании. Название является аналогом архитектурного фасада. Фасад - это объект, который обеспечивает упрощенный интерфейс с большим объемом кода, например библиотекой классов.
Но в Laravel все методы классов фасадов доступны через ::
(Оператор разрешения области действия), даже если методы не являются статичными.
Как это возможно? Почему PHP не говорит, что метод не является статичным.
например Auth::user()
хотя user()
Метод не является статическим, как это доступно, где-то класс должен быть обновлен или я что-то упустил?
1 ответ
Магия происходит в Facade
"s __callStatic
функция.
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);
}
Сначала он получает соответствующий экземпляр, а затем просто вызывает запрошенный метод с заданными аргументами.