我使用了以下代码行并且工作正常我知道getDatabaseName()
是Connection类的成员函数但我想知道DB::connection()
是否用于创建它的含义是什么连接类的对象还是其他什么东西?
DB::connection()->getDatabaseName(); // Meaning of this Line
getDatabaseName() // function of connection class [Clear to Me]
DB::connection() // it is confusing what does it mean
答案 0 :(得分:4)
DB
是Laravel Facade。基本上这样工作:
DB::connection()
)__callStatic
DatabaseManager
)$db->connection()
) Illuminate\Support\Facades\Facade
public static function __callStatic($method, $args)
{
$instance = static::getFacadeRoot();
// method content simplified for brevity
return call_user_func_array(array($instance, $method), $args);
}
getFacadeRoot()
基本上返回实际的实例。来自全局Application IoC Container或来自外观本身的变量(如果您第二次使用它)
然后call_user_func_array
用于调用实例上的原始方法$method
。
如果您想知道哪个Facade解析为哪个类可以使用this reference,或者转到源代码中的Facade类并在类的docblock中搜索@see
:
/**
* @see \Illuminate\Database\DatabaseManager
* @see \Illuminate\Database\Connection
*/
class DB extends Facade {