Контекст:
Я разрабатываю пакет composer из type:library
. Пакет является оболочкой для API.
Я использую Guzzle для выполнения запроса API к URL-адресу.
public function callMethodA() {
$client = new GuzzleHttp\Client();
$res = $client->request( 'GET', 'https://api.mydomain.com', [
'getDetails' => [ 'methodA', 'parameter1' ]
] );
}
Мое требование:
Когда пакет устанавливается моими пользователями в их проекте, я хочу, чтобы код вызывал рабочий URL - https://api.mydomain.com
.
Когда я занимаюсь разработкой пакета на моем локальном компьютере, я хочу, чтобы код вызывал мой локальный URL - http://api.mydomain.lcl
Один из способов сделать это:
Один из альтернатив - я определяю константы и комментирую константу разработки и не комментирую другую константу, прежде чем Я передаю код.
define('API_URL', 'http://api.mydomain.lcl');
//define('API_URL', 'http://api.mydomain.com'); DON'T FORGET TO UNCOMMENT THIS LINE AND COMMENT ABOVE LINE.
public function callMethodA() {
$client = new GuzzleHttp\Client();
$res = $client->request( 'GET', API_URL, [
'getDetails' => [ 'methodA', 'parameter1' ]
] );
}
Эта альтернатива будет работать, но является рискованной.
Вопросы:
Как лучше обрабатывать переменные на основе среды разработки composer (мой локальный компьютер) и среды развертывания composer (пакет в моем пользовательском проекте).
Если dotenv - это способ go, как мне выпустить файл env в среде развертывания как мой .env w может быть gitignored.
Что-то для объяснения моей настройки: Разработка пакетов