如何在PHP库中处理配置文件

时间:2015-08-10 14:36:39

标签: php git testing config

我写了一个小型库(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类加载文件,解析它并相应地表现。做这个的最好方式是什么?目前存储库中没有测试,但我正在研究它(以及一些代码重构)。

1 个答案:

答案 0 :(得分:1)

我建议将配置保留在您的图书馆之外;我为Mandrill邮件服务做了类似的事情,在那里我给开发人员留下了配置管理(我在Symfony 2项目中工作)。对我来说,没有public function __construct($api, $options = array()) { // My code } 类,只有接受API密钥的服务构造函数和(可选)选项数组:

CkIds = returnCommaSeparatedString(setOFCommKitID);
        pr = New PageReference('/apex/PDFPage?id=' + iICPRec +'&CKIds='+CkIds);
        pdf = pr.getContentAsPDF();
        lstOfBlob.add(pdf);

当我需要在Symfony 2应用程序中使用我的服务时,我从服务外部的一个地方(Symfony的配置文件)中获取所需的参数和配置;这样我可以将库与配置分离。当然,如果缺少必需参数,服务构造器会抛出异常。