php实现自动化运行环境检测

本文由neuSnail在segmentfault发表,未经允许严禁转载,原文地址 https://segmentfault.com/a/11...

   我们在开发一个项目时必然会经历本地开发,qa测试,预发测试,线上运行几个过程,而在不同的环境下项目读取的配置文件很可能是不同的,比如项目在本地开发时读取的数据库host地址是127.0.0.1,而在线上读取的可能是另一个地址。此时应该怎么处理呢?每切换一次环境就手动改一下读取的配置文件?这样不但浪费时间降低开发效率而且还容易导致切换读取文件后把代码提交上线前没有改过来导致出错。

   正确的处理方式应该是在不同的环境下读取该环境特有的标识从而读取不同的配置,而php.ini文件就是一个很好的选择,在各个开发环境server中的php.ini内配置不同的runmode值来区分运行环境。在.ini中 的配置方式举例如下:

[runmode]
projectA.runmode='test'

以上代码可以直接添加到php.ini中也可以写为文本xxx.ini添加到conf.d文件夹中单独管理。
在ini中添加配置项后可以通过get_cfg_var()方法读取。给出一个RunMode运行环境读取类的代码如下:

class RunMode
{
    private static $default = 'online';
    private static $runMode = '';
    private static $map = ['online','test','qa'];

    public static function init()
    {
        self::detect();
    }

    private static function detect()
    {
        $runMode = get_cfg_var('projectA.runmode');
        if (!in_array($runMode, self::$map)) {
            self::$runMode = self::$default;
        } else {
            self::$runMode = $runMode;
        }
    }

    public static function getRunMode()
    {
        if (empty(self::$runMode)) {
            self::detect();
        }
        return self::$runMode;
    }
}

在个人的项目初始化时调用RunMode::init()方法来读取.ini中配置的runmode,之后可以通过RunMode::getRunMode()方法来读取当前代码运行的runmode,从而进行特定的配置读取等操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值