Как работают фасады в Laravel? Как получить доступ к методам с помощью ::

Я читал про Фасад

Шаблон фасада (также пишется как фасад) — это шаблон проектирования программного обеспечения, обычно используемый в объектно-ориентированном программировании. Название является аналогом архитектурного фасада. Фасад — это объект, который обеспечивает упрощенный интерфейс для большей части кода, например библиотеки классов.

Но в Laravel все методы классов фасада доступны через ::(Оператор разрешения области видимости) хотя методы не являются статичными вообще.

Как это возможно? Почему PHP не говорит, что метод не является статичным.

например Auth::user() хотя user() метод не статично как это доступно, где-то класс должен быть обновлен или я что-то упустил?

0

Решение

Магия происходит в 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);
}

Сначала он получает соответствующий экземпляр, а затем просто вызывает запрошенный метод с заданными аргументами.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector