首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel在哪里存储已配置的实例逻辑?

Laravel在哪里存储已配置的实例逻辑?
EN

Stack Overflow用户
提问于 2016-12-31 02:17:50
回答 0查看 218关注 0票数 3

我正在为一个Github API项目使用Laravel。

我想设置一个已经预先配置好的通用Guzzle客户端实例。我之所以需要这个,是因为对于大约90%的Guzzle请求,Guzzle客户端将需要一个access_token头和一个base_uri。

代码语言:javascript
运行
复制
// Return a new configured guzzle client.
return new Client([
    'base_uri' => 'https://api.github.com',
    'headers' => [
        'Authorization' => "token {$access_token}"
    ]
]);

我知道我可以将它绑定到容器中,我目前在自定义中间件中是这样做的:

代码语言:javascript
运行
复制
if (Auth::check()) {
    $this->app->singleton(Client::class, function() {
        // Grab the current user.
        $user = Auth::user();

        $access_token = decrypt($user->access_token);

        // Return a new configured Guzzle instance.
        return new Client([
            'base_uri' => 'https://api.github.com',
            'headers' => [
                'Authorization' => "token {$access_token}"
            ]
        ]);
    });
}

我只是简单地用我预先配置的具体实例覆盖默认的Guzzle客户端。这工作得很好,但我遇到的问题是我不能在控制器中执行以下操作:

代码语言:javascript
运行
复制
public function __construct(Container $container)
{
    $guzzle = $container->make(Client::class);
}

如果我使用上面的代码,我只会得到Guzzle的默认实现,而不是我预先配置的实例。我猜这是因为控制器的构造函数在中间件之前运行,只是还没有设置。

不过,我仍然希望将该属性共享给控制器中的其他方法。我该怎么解决这个问题呢?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41400791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档