【发布时间】:2018-12-23 04:39:16
【问题描述】:
我使用数据库外观。我看到它可以在 Illuminate\Database\DatabaseManager 的 DB::connection 和 Illuminate\Database\Connection 的 DB::select 中使用。
我不明白一个门面如何应用两个服务?
感谢您的提问!
【问题讨论】:
我使用数据库外观。我看到它可以在 Illuminate\Database\DatabaseManager 的 DB::connection 和 Illuminate\Database\Connection 的 DB::select 中使用。
我不明白一个门面如何应用两个服务?
感谢您的提问!
【问题讨论】:
一个 Facade 可以为不同的方法指向多个类。这可以通过魔术方法__call 来实现。
这是DatabaseManager 类的__call 方法:
/**
* 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 类。
【讨论】: