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

问题描述 投票:0回答:1

这是关于 Redis Facade 的 Laravel(v8 但不重要)的源代码链接

https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Facades/Facade.php#L164

我想找到门面本身提供的“具体”Redis 类。

我该怎么办? Laravel 框架在哪里将这个门面绑定到一个“真正的”类?

php laravel facade
1个回答
0
投票

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();
    });
}

RedisManager
Redis
的具体实现。每当您在
Redis
上调用方法时,您只是在
RedisManager
上调用方法。

© www.soinside.com 2019 - 2024. All rights reserved.