Laravel中使用Facade可以方便的取出容器中的对象
本文以调用DB为例解读Facades的源码
controller:
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class TestController extends Controller
{
public function test()
{
$users = DB::table("user")->get();
return response()->json($users);
}
}
定位到DB类:
位置/vendor/laravel/framework/src/Illuminate/Support/Facades/DB.php
class DB extends Facade
{
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor()
{
return 'db';
}
}
定位DB的父类Facade:
位置/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php
这里只关注关键的几个方法:
public static function getFacadeRoot()
{
return static::resolveFacadeInstance(stati