Laravel 4级装载和外墙

kap*_*pad 3 php laravel laravel-4

我想知道Laravel如何通过Facades进行课堂加载.

我遇到了这个答案,说DBalias/facade类加载了代码

这里 /vendor/laravel/framework/src/Illuminate/Database/Connection.php

我尝试按照答案中给出的建议并遵循index.php中的代码,但无法理解DBFacade 如何加载Connection类.

我还有一些困惑,因为答案说Connection已经加载了类,但该类没有connection方法.然而文档说,我已经能够使用连接方法,如,

DB::connection('my-connection-name'); 这是指向此文档的链接

我想知道这些映射的位置以及加载是如何发生的.我猜测作曲家已经自动化了映射,但是当我的应用程序启动时它实际发生了什么?

Sel*_*hcD 13

当您使用静态数据库调用时,Laravel使用Illuminate\Support\Facade中 Facade类提供的机制.调用魔术方法__callStatic并检索由DB facade(此处为db)提供的"原始"类.

Facade.php中的第54行显示它使用$ app变量(它是静态的并在Illuminate\Foundation start.php文件中提供)来获取在App容器中注册为DB的对象.

return static::$resolvedInstance[$name] = static::$app[$name];
Run Code Online (Sandbox Code Playgroud)

$ app ['db']已在数据库服务提供商中注册.

啊,你可以使用DB而不是Illuminate\Support\Facades\DB,因为在app配置文件中创建了别名.

我希望这能帮到您 :)