Laravel:如何找到Facade的具体实现?

wbgh16ku  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(117)

这是Laravel(v8,但它不重要)关于Redis Facade的源代码链接
https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Facades/Facade.php#L164
我想找到由facade本身提供服务的“混凝土”Redis类。
我该怎么办?Laravel框架在哪里将这个facade绑定到一个“真实的的”类?

q3qa4bjr

q3qa4bjr1#

Laravel中Facade的具体实现是从服务容器提供的。
对于Redis,您可以在vendor/laravel/framework/src/Illuminate/Redis/RedisServiceProvider.php中找到
在Laravel 9.3中,你可以看到这样的东西

public function register()
{
    $this->app->singleton('redis', function ($app) {
        $config = $app->make('config')->get('database.redis', []);

        return new RedisManager($app, Arr::pull($config, 'client', 'phpredis'), $config);
    });

    $this->app->bind('redis.connection', function ($app) {
        return $app['redis']->connection();
    });
}

RedisManagerRedis的具体实现。无论何时调用Redis上的方法,都只调用RedisManager上的方法。

相关问题