当前位置: 首页 > 后端技术 > PHP

PHP实现自动运行环境检测

时间:2023-03-30 06:13:32 PHP

本文由neuSnail发布在segmentfault上,未经允许严禁转载。原文地址为https://segmentfault.com/a/11...我们在开发项目的时候,难免会体验到本地开发。qa测试,预发布测试,在线跑几个进程,不同环境下项目读取的配置文件可能不同。比如在本地开发项目时读取的数据库主机地址是127.0.0.1,而线上可能读取的是Another地址。这个时候应该怎么办?每次切换环境都要手动更改读取的配置文件?这样不仅浪费时间,降低开发效率,而且还容易导致在线提交前切换读取文件和提交代码后出错,导致出错。正确的处理方式应该是在不同的环境中读取环境的唯一标识来读取不同的配置,而php.ini文件是一个不错的选择,每个开发环境服务器的php.ini中的配置都是不同的runmode值来区分运行环境。.ini中的配置方法如下:[runmode]projectA.runmode='test'以上代码可以直接添加到php.ini中,也可以写成文本xxx.ini添加到conf.d文件夹中单独管理。在ini中添加配置项后,可以通过get_cfg_var()方法读取。读取RunMode运行环境的代码如下:classRunMode{privatestatic$default='online';私人静态$runMode='';privatestatic$map=['online','test','qa'];publicstaticfunctioninit(){self::detect();}privatestaticfunctiondetect(){$runMode=get_cfg_var('projectA.runmode');如果(!in_array($runMode,self::$map)){self::$runMode=self::$default;}else{self::$runMode=$runMode;}}publicstaticfunctiongetRunMode(){if(empty(self::$runMode)){self::detect();}返回自我::$runMode;}}调用RunMode::init()方法读取配置的runmode。获取当前代码运行的runmode,从而进行具体的配置读取等操作。