Я написал небольшую библиотеку (https://github.com/dborsatto/php-giantbomb), которая выступает в качестве оболочки для API. Для работы в библиотеке необходимо 2 основные параметры конфигурации:Как обрабатывать конфигурационные файлы в библиотеке PHP
- АНИ ключ
- Файл, который описывает параметры API
Что такое предложил способ справиться с этими двумя файлами?
Ключ API, конечно, личный, поэтому его нельзя добавить в репозиторий. Но при этом я не могу написать функциональный тест для библиотеки в целом, ограничившись только модульными тестами для отдельных частей. Я вообще отказываюсь от функциональных тестов или есть способ сделать эту работу?
О другой конфигурации, в основном это файл YAML (https://github.com/dborsatto/php-giantbomb/blob/master/api_config.yml), который включает базовую конечную точку API и конфигурацию для каждого репозитория данных. На данный момент это обрабатывается классом Config, который отделен таким образом, что пользователь должен написать код клея и ввести данные в конфигурацию. Таким образом, тест легче тестировать, но в целом я чувствую, что он создает больший недостаток, чем просто позволить классу Config загружать файл, анализировать его и вести себя соответствующим образом. Каков наилучший способ сделать это? На данный момент в репозитории нет тестов, но я работаю над ним (наряду с рефакторингом кода).
Я хотел сделать Bundle над этой библиотекой для более удобного использования с Symfony, и в этом случае это то, что я сделал бы. Но в среде Symfony это проще, потому что конфигурация централизована, и на самом деле Symfony отвечает за код клея. Как отдельная библиотека, я не уверен, какой будет лучший вариант. Может быть, чтобы Config загрузил конфигурацию по умолчанию, если она не указана? –
Я полностью согласен с конфигурацией по умолчанию (если это применимо: если мне нужно передать свой идентификатор API, он должен быть обязательным параметром без по умолчанию). В общем, я все же считаю, что лучше сделать вашу библиотеку полученной конфигурацией из внешнего источника: «Чтобы использовать мою библиотеку, вам необходимо передать параметры A, B и C», и вам все равно, как и где эти параметры управляются , –
Вместо того, чтобы рассказать о создании простого пакета Composer? Просто, чтобы не быть строго привязанным к Symfony;) –