首页 > 解决方案 > 在作曲家库中根据环境处理变量

问题描述

语境:

我正在开发一个作曲家包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' ]
    ] );
}

这种替代方案可行,但有风险。

问题:

  1. 根据composer的开发环境(我的本地机器)和composer的部署环境(我的用户项目中的包),有什么更好的方法来处理变量。

  2. 如果 dotenv 是一种方法,我如何在部署环境中发布 env 文件,因为我的 .env 将被 gitignored。

解释我的设置的东西: 包开发

标签: phpcomposer-php

解决方案


推荐阅读