git — Как работать с файлами конфигурации в библиотеке PHP

Я написал небольшую библиотеку (https://github.com/dborsatto/php-giantbomb), который действует как оболочка для API. Для работы библиотеке необходимо 2 основных варианта конфигурации:

  • Ключ API
  • Файл, который описывает параметры API

Каков способ обработки этих двух файлов?

Ключ API, конечно, является персональным, поэтому его нельзя добавить в репозиторий. Но при этом я не могу написать функциональный тест для библиотеки в целом, ограничивая себя только модульными тестами для отдельных частей. Я вообще отказываюсь от функциональных тестов или есть способ заставить это работать?

По поводу другого конфига, в основном это файл YAML (https://github.com/dborsatto/php-giantbomb/blob/master/api_config.yml), который включает базовую конечную точку API и конфигурацию для каждого хранилища данных. На данный момент это обрабатывается классом Config, который отделен таким образом, что пользователь должен написать связующий код и ввести данные в Config. Таким образом, это проще для тестирования, но в целом я чувствую, что это создает больший недостаток, чем просто позволить классу Config загрузить файл, проанализировать его и вести себя соответственно. Каков наилучший способ сделать это? На данный момент в репозитории нет тестов, но я работаю над этим (вместе с некоторым рефакторингом кода).

0

Решение

Я бы предложил оставить конфигурацию за пределами вашей библиотеки; Я сделал нечто подобное для почтовой службы Mandrill, где я оставил разработчику управление конфигурацией (я работал над проектом Symfony 2). Для меня нет Config class, просто конструктор службы, который принимает ключ API и (необязательный) массив опций:

public function __construct($api, $options = array())
{
// My code
}

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

1

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

Других решений пока нет …

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