Как привязать значение конфигурации поставщика услуг Laravel во время выполнения? - PullRequest
0 голосов
/ 13 сентября 2018

Я создал пользовательский поставщик услуг, который расширяет XeroServiceProvide. По сути, у меня есть несколько учетных записей Xero, и я хочу изменить два параметра конфигурации: время выполнения consumer_key и consumer_secret . Есть ли быстрый способ. Я проверил Контейнер службы контекстную привязку, но не знаю, как использовать.

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use DrawMyAttention\XeroLaravel\Providers\XeroServiceProvider;

class CustomXeroServiceProvider extends XeroServiceProvider
{
    private $config = 'xero/config.php';

    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
        parent::boot();
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register($configParams = [])
    {
        parent::register();

        if(file_exists(config_path($this->config))) {
            $configPath = config_path($this->config);
            $config = include $configPath;
        }

        $this->app->bind('XeroPrivate', function () use ($config,$configParams) {

            if(is_array($configParams) && count($configParams) > 0){
                if(isset($configParams['consumer_key'])){
                    $config['oauth']['consumer_key']    = $configParams['consumer_key'];
                }

                if(isset($configParams['consumer_secret'])){
                    $config['oauth']['consumer_secret'] = $configParams['consumer_secret'];
                }
            }
            return new \XeroPHP\Application\PrivateApplication($config);
        });

    }
}

Из контроллера я попытался изменить значение, как это, но привязка параметров не изменялась динамически

foreach($centers as $center) {

 config(['xero.config.oauth.consumer_key' => $center->consumer_key]);
 config(['xero.config.oauth.consumer_secret' => $center->consumer_secret]);
}

Обновление 2

Есть ли способ перепривязать контейнер служб после обновления значений файла конфигурации или каким-либо образом обновить привязку поставщика услуг?

config(['xero.config.oauth.consumer_key' => 'XXXXXXX']);
config(['xero.config.oauth.consumer_secret' => 'XXXXXX']);
// rebind Service provider after update
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...