是的,你可以做这样的事情。我建议将这样的内容放入您的根目录index.php
中,以便一开始就设置好:
switch( $_SERVER['HTTP_HOST'] )
{
case 'www.domainname.com':
define('ENVIRONMENT', 'production');
break;
case 'dev.domainname.com':
define('ENVIRONMENT', 'development');
break;
case 'test.localhost':
case 'www.test.localhost':
define('ENVIRONMENT', 'local');
break;
}
这定义了一个名为的变量ENVIRONMENT
,然后您可以在整个配置文件(和应用程序,如果您愿意)中使用该变量 - 这样,您可以执行以下操作,而不是针对 $_SERVER 变量进行测试:
switch (ENVIRONMENT)
{
case 'local':
case 'development':
$config['base_url'] = 'localhost';
break;
case 'production':
$config['base_url'] ="http://www.domain.com";
break;
}
和其他方便的东西,如:
switch (ENVIRONMENT)
{
case 'local':
error_reporting(E_ALL);
break;
case 'development':
error_reporting(E_ALL & ~E_DEPRECATED);
break;
case 'production':
error_reporting(0);
break;
}
这也可以在主应用程序中使用,例如决定是否要在视图中输出分析跟踪代码 - 通常只希望在生产中输出 - 例如:
<? if(ENVIRONMENT == 'production'): ?>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-Y']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<? endif ?>