Laravel: Pusher 的动态配置
Laravel: dynamic configuration for Pusher
我正在尝试在我的 Laravel 应用程序 (SaaS) 中动态配置 Pusher。
基本上我想为不同的帐户存储不同的 Pusher 配置。并根据用户调用相应的配置。
我尝试使用 config()->set('services.pusher.xxx', 'yyyy')
在运行时更改配置,但这在框架的任何级别都不起作用,自定义 ServiceProvider 中的事件。
我找到了 Laravel 的 BroadcastManager
并试图覆盖 createPusherDriver()
以便我可以使用用户的配置创建 PusherBroadcaster
的自定义实例,但是我我不确定该怎么做或放在哪里!
best-practice/standard 方法是什么?
我一直在自己的一个项目中使用这样的设置来设置自定义邮件配置:
NOTE: Your mileage may vary due to the order in which service providers are loaded in your app.
像app\Providers\ConfigProvider.php
一样创建服务提供商
public function boot()
{
$this->app->booted(function () {
$shouldSetCustomConfig = true;
// Set config values from database.
if($shouldSetCustomConfig) {
config([
'mail.host' => Config::get('mail.host'),
'mail.port' => Config::get('mail.port'),
]);
}
});
}
$this->app->booted()
是一个简单的回调,在应用程序启动后调用。这可能不会 总是 正常工作,因为我已经看到各种包也使用这个回调来做各种事情。在这种情况下,注册顺序很重要。请注意,不需要使用此回调。可以直接调用 config(['key' => 'newval'])
并且它可以按预期工作。
- 上面的服务提供者应该在您正在为其设置配置的提供者之前加载。在上面的示例中,它将是
Illuminate\Mail\MailServiceProvider::class
。这应该确保加载了正确的配置。
我正在尝试在我的 Laravel 应用程序 (SaaS) 中动态配置 Pusher。 基本上我想为不同的帐户存储不同的 Pusher 配置。并根据用户调用相应的配置。
我尝试使用 config()->set('services.pusher.xxx', 'yyyy')
在运行时更改配置,但这在框架的任何级别都不起作用,自定义 ServiceProvider 中的事件。
我找到了 Laravel 的 BroadcastManager
并试图覆盖 createPusherDriver()
以便我可以使用用户的配置创建 PusherBroadcaster
的自定义实例,但是我我不确定该怎么做或放在哪里!
best-practice/standard 方法是什么?
我一直在自己的一个项目中使用这样的设置来设置自定义邮件配置:
NOTE: Your mileage may vary due to the order in which service providers are loaded in your app.
像app\Providers\ConfigProvider.php
public function boot()
{
$this->app->booted(function () {
$shouldSetCustomConfig = true;
// Set config values from database.
if($shouldSetCustomConfig) {
config([
'mail.host' => Config::get('mail.host'),
'mail.port' => Config::get('mail.port'),
]);
}
});
}
$this->app->booted()
是一个简单的回调,在应用程序启动后调用。这可能不会 总是 正常工作,因为我已经看到各种包也使用这个回调来做各种事情。在这种情况下,注册顺序很重要。请注意,不需要使用此回调。可以直接调用config(['key' => 'newval'])
并且它可以按预期工作。- 上面的服务提供者应该在您正在为其设置配置的提供者之前加载。在上面的示例中,它将是
Illuminate\Mail\MailServiceProvider::class
。这应该确保加载了正确的配置。