Ниже в основном то, что у меня есть прямо сейчас, и, похоже, это работает. Но я нашел людей, говорящих, что вы не должны запускать запросы к базе данных в поставщике услуг, потому что еще не все может быть зарегистрировано. Существуют ли потенциальные проблемы с выполнением конфигурации таким образом? И если да, то есть ли альтернативный способ настроить аналогичную ситуацию, когда я получаю данные конфигурации из базы данных?
Первоначально я использовал файл конфигурации для привязки экземпляра объекта, который я хотел
config/payment.php
'test' => array(
'terminalid' => env('TERMINAL'),
'secret' => env('SECRET'),
),
PaymentServiceProvider в методе регистрации
public function register()
{
$this->app->bind(Gateway::class, function ($app) {
$gateway = new Gateway();
return $gateway->initialize([
config('payment.test')
]);
});
}
Но я хочу изменить это, чтобы настроить конфигурацию на основе запроса к базе данных.
Таблица настроек
license | terminal | secret |
---|---|---|
test | ABC123 | XXXX |
demo | ZYX987 | XXXY |
Итак, что-то вроде этого
public function register()
{
$this->app->bind(Gateway::class, function ($app) {
$setting = Setting::where("id",request()->id)->first();
$gateway = new Gateway();
return $gateway->initialize([
'terminalid' => $setting->terminal,
'secret' => $setting->secret,
]);
});
}