定义网站配置

时间:2011-05-26 11:57:04

标签: php

我对为我的网页脚本定义配置的更好方法有些怀疑 目前我有这样的事情:

switch($lang){  
    case 'en':
        define('VAR1', 'abc')  
        define('VAR2', 'def')  
        break;
    case 'unk':
        define('VAR1', 'omg')  
        define('VAR2', 'wtf')  
        break;  
}  

等。看起来有些奇怪(不是我的想法),但它运作正常 然而,我的想法是定义一系列这些配置:

$vars = array(  
    'en'=>array( 
        'VAR1'=>'abc',  
        'VAR2'=>'def'  
    ),
    'unk'=>array(  
        'VAR1'=>'omg',  
        'VAR2'=>'wtf'  
    )  
)  

您如何看待哪一个更好? define方式有点漂亮,因为我只需要编写<?=VAR1 ?>而不是<?=$vars[$lang]['VAR1'] ?>,但使用define是明智的吗?

3 个答案:

答案 0 :(得分:2)

你可能在谈论本地化。最好的方法是使用gettext-related tools

如果你在谈论配置,最好的方法就是使用PHP可以轻松解析的ini文件。

答案 1 :(得分:2)

IMO,您应该将翻译拆分为不同的文件,而不是将2(或更多)放在同一个文件中。如果您有超过1000行翻译,会发生什么?

如果你想使用DEFINE并切换,你可以尝试:

switch ($lang) {
case 'en':
    require_once ('path/to/lang/trans.en.ext');
    break;
case 'unk':
    require_once ('path/to/lang/trans.en.ext');
    break;
default:
    require_once ('path/to/lang/trans.default.ext');
    break;

}

将您的设置放在这些文件中。我在我的项目中使用相同的方法,但仅用于生产,开发和沙箱设置之间的配置。对于本地化,我创建了一个类,它的工作方式与您描述的几乎相同,但使用的是单独的文件。

祝你好运!

答案 2 :(得分:0)

我建议编写和阅读INI脚本。大多数最终用户和系统管理员都习惯使用这种格式。

http://php.net/manual/en/function.parse-ini-file.php