Как фасад Laravel может использовать БД и экземпляр БД одновременно? - PullRequest
0 голосов
/ 23 декабря 2018

Я использую DB фасад.Я вижу, что он может использовать в DB :: connection из Illuminate \ Database \ DatabaseManager и DB :: select из Illuminate \ Database \ Connection.

enter image description here

IНе понимаете, как один фасад может применить два serivce?

Спасибо за ваш вопрос!

1 Ответ

0 голосов
/ 23 декабря 2018

Один фасад может указывать на несколько классов для разных методов.Это возможно с помощью магического метода __ call .

Вот метод __call класса DatabaseManager:

 /**
 * Dynamically pass methods to the default connection.
 *
 * @param  string  $method
 * @param  array   $parameters
 * @return mixed
 */
public function __call($method, $parameters)
{
    return $this->connection()->$method(...$parameters);
}

Фасад DB указывает накласс DatabaseManager и, если метод не найден, DatabaseManager затем перенаправляет вызов в класс Connection.

...