public function provider($provider, array $options = []) { $class = 'app\\modules\\autoparts\\components\\BrxProvider'; if (!empty($access = $this->getAccess($provider, $options))) { $options = BrxArrayHelper::array_replace_recursive_ncs($options, $access); } if (!empty($shippingPeriod = $this->getShippingPeriod($provider, $options))) { $options = BrxArrayHelper::array_replace_recursive_ncs($options, $shippingPeriod); } $provider = new $class($provider, $options); return $provider instanceof BrxProvider ? $provider : false; }
/** * Собираем все параметры для выполнения метода по следующему алгоритму: [параметры_указанные_в_конфигурации] <- [параметры_указанные_в_конфигурации_для_всех_методов] <- [парметры_указанные_при_вызове_метода]. Приоритет увеличивается слева на право. * @param $method string метод для которого собираются параметры * @return array все параметры * TODO условие isParamsAsArray - костыль который требует уничтожения на самом глубоком уровне!!!))) */ private function getOptions($method, array $options) { if (!($accessOptions = $this->getAccessOptions($method))) { return false; } $options = Yii::$app->getModule('autoparts')->converter->run($this->provider_name, $method, $options); $options = BrxArrayHelper::array_replace_recursive_ncs($this->methods[$method]['params'], $this->methodsOptions, $accessOptions, $options); //видоизменяем параметры по шаблону if (isset($this->authParamsTemplate)) { foreach ($this->authParamsTemplate as $param => $value) { if (isset($options[$param]) && isset($options[$value])) { $options[$param] = $options[$value]; unset($options[$value]); } } } if ($this->isParamsAsArray) { $options = [$options]; } return $options; }