Php Laravel:推进器的动态配置

Php Laravel:推进器的动态配置,php,laravel,pusher,service-provider,broadcasting,Php,Laravel,Pusher,Service Provider,Broadcasting,我正在尝试在我的Laravel应用程序(SaaS)中对Pusher进行动态配置。 基本上,我想为不同的帐户存储不同的Pusher配置。并根据用户调用相应的配置 我尝试在运行时使用config()->set('services.pusher.xxx','yyyy')更改配置,但这在框架的任何级别都不起作用,在自定义ServiceProvider中是事件 我找到了Laravel的BroadcastManager,并试图覆盖createPusherDriver(),这样我就可以用用户的配置创建一个Pu

我正在尝试在我的Laravel应用程序(SaaS)中对Pusher进行动态配置。 基本上,我想为不同的帐户存储不同的Pusher配置。并根据用户调用相应的配置

我尝试在运行时使用
config()->set('services.pusher.xxx','yyyy')
更改配置,但这在框架的任何级别都不起作用,在自定义ServiceProvider中是事件

我找到了Laravel的
BroadcastManager
,并试图覆盖
createPusherDriver()
,这样我就可以用用户的配置创建一个
PusherBroadcaster
的自定义实例,但我不知道该怎么做,也不知道该放在哪里


最好的做法/标准方法是什么?

我在自己的一个项目中使用了类似的设置来设置自定义邮件配置:

注意:由于服务提供商在应用程序中的加载顺序不同,您的里程数可能会有所不同

创建一个服务提供者,如
app\Providers\ConfigProvider.php

公共函数启动()
{
$this->app->booted(函数(){
$shouldSetCustomConfig=true;
//从数据库中设置配置值。
如果($shouldSetCustomConfig){
配置([
'mail.host'=>Config::get('mail.host'),
'mail.port'=>Config::get('mail.port'),
]);
}
});
}
  • $this->app->booted()。这可能并不总是能正常工作,因为我看到过很多包也使用这个回调来做各种事情。在这种情况下,登记顺序很重要。请注意,不需要使用此回调。您可以直接调用
    配置(['key'=>'newval'])
    ,它可以按预期工作
  • 上面的服务提供商应在为其设置配置的提供商之前加载。在上面的示例中,它将是
    illumb\Mail\MailServiceProvider::class
    。这应该确保加载了正确的配置

太好了。我要试一试。谢谢