php - 在作曲家库中根据环境处理变量
问题描述
语境:
我正在开发一个作曲家包type:library
。该包是 API 的包装器。
我使用 Guzzle 对 url 进行 API 请求。
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 是一种方法,我如何在部署环境中发布 env 文件,因为我的 .env 将被 gitignored。
解决方案
推荐阅读
- angular - 将值传递给 ngb 模态角度
- html - 为什么 Jquery 不给出
单击锚点时折叠的类? - node.js - 使用 express 从网站获取 html 返回无效的标头值 char
- django - 在 django 中重启 celery 和 celery beat schedule 关系
- javascript - HeaderRight 按钮不可点击(React Native)
- node.js - 在 node.js 中使用代理 ip 发送 http 请求
- node.js - 无法上反向代理 nginx socket.io
- java - Spring Boot 应用程序的 https 响应标头中缺少 Strict-Transport-Security
- encode - 如何正确反转 CBOR.decode
- amazon-web-services - terraform 在另一个资源中使用来自 for_each 的特定值