我的项目中有一个配置文件(.php),其中包含一个包含所有项目设置的数组。该数组的结构类似于:
'db' =>
'prod' =>
'host' => ''
'dbname' => ''
'username' => ''
'password' => ''
'local' =>
'host' => ''
'dbname' => ''
'username' => ''
'password' => ''
'other' => 'settings'
我的问题是:我将如何管理这些双重连接信息?
我是否应该在此文件的后面,如果我在本地,请将本地信息放在prod数组中?或者我应该使用多个文件进行配置,并在此config.php中包含好的文件(然后我会将其包含在此项目的每个文件中)?
你会怎么做?
谢谢。
答案 0 :(得分:1)
正如@Dagon所说,通常你会发现自己处于哪种环境并阅读一种或另一种配置。
您可以通过PHP检测它。您可以从PHP读取主机名并相应地定义常量:
if(!defined('APPLICATION_ENV')) {
if(FALSE === stripos($_SERVER['SERVER_NAME']), 'www.example.com') {
define(APPLICATION_ENV, 'development');
} else {
define(APPLICATION_ENV, 'production');
}
}
这样,您根本不必依赖环境设置。
设置完成后(在Apache的配置中,或在系统级别),您可以使用getenv函数读取其值:
echo getenv('APPLICATION_ENV');
如果您想了解更多相关信息,请阅读以下内容: Set Application_ENV via virtual host config and read this in PHP
答案 1 :(得分:0)
通过使用@Dagon的评论和@Pere Pages的答案,我找到了一个适合我的解决方案:
在我的$config
数组中,我有3个数组:use
,prod
和local
。
在use
我可以根据环境(生产或本地主机)放置不会改变的设置,我也有根据环境而改变的设置,但它们都是空的。
在prod
和local
中,我设置了适合每个环境的设置(use
中为空的设置)。
在同一个文件中,我会查看use
(foreach)的每一行,对于空行,我会使用来自prod
或local
的相应值填充它们,取决于我的APPLICATION_ENV
(在我的计算机上设置为local
。)
谢谢。