ZF3 правильное место, чтобы положить ваши ключи API

Я думаю, что я делаю это правильно, потому что я могу отменить файл в режиме разработки, но, конечно, я спрашиваю. Как правильно хранить ключи API для сервисов, которые я установил через composer. Пока я храню ключи в каталоге автозагрузки внутри local.php и получаю их через сервисный локатор.

Например

$config  = $this->serviceLocator->get('Config');
var_dump($config['service_name_api']); // Returns api key

Это правильный путь или я должен использовать другой способ доступа к этим свойствам?

1

Решение

Лучшее место будет:

config/autoload/{config file name you want}.local.php

Я предлагаю структуру:

[
'keystore' => [
'api' => [
// keys array
]
]
]

Повторяю, я предлагаю структуру выше, вы можете создать свою собственную структуру, но в любом случае добавить

config/autoload/{config file name you want}.local.php.dist

файл, содержащий пример данных.

1

Другие решения

Это похоже на то, что я бы сделал, хотя вам нужно будет либо указать значение по умолчанию (в конфигурации вашего модуля), что невозможно в контексте ключей API, либо создать правильное исключение на вашей фабрике, потому что вы не хотите есть undefined index service_name_api через несколько месяцев 🙂

Некоторым людям также нравится иметь объект конфигурации и иметь фабрику только для этого объекта (это помогает управлять значениями по умолчанию, а не сбой). Я лично нахожу это слишком много, хотя, если ваш ключ не используется повторно во многих местах, в этом случае вы бы дублировали заводской тест.

Таким образом, вместо добавления следующего к каждой фабрике, которая потребляет его

if (!isset($config['service_name_api']) || !is_string($config['service_name_api'])) {
throw new \Exception('No "service_name_api" found in the configuration');
}

Вы могли бы иметь простой объект

final class ServiceNameApiOption
{
private $key;

public function __construct(string $apiKey)
{
$this->key = $apiKey;
}

public function getKey() : string
{
return $this->key;
}
}

И тогда завод только для этого:

final class ServiceNameApiOptionFactory
{
public function __invoke(ContainerInterface $container)
{
$config  = $container->get('Config');
if (!isset($config['service_name_api']) || !is_string($config['service_name_api'])) {
throw new \Exception('No "service_name_api" found in the configuration');
}
return new ServiceNameApiOption($config['service_name_api']);
}
}
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector