我正在开展一个小项目,需要以某种方式实施国际化支持。我正在考虑使用常量来为一个文件中的文本定义许多符号,这些符号可以随后包含在内。但是,我不确定使用变量是否更快,或者如果我可以使用关联数组而没有太多的性能影响。
在PHP中定义常量值更好,性能方面 - 使用define("FOO", "...")
定义的常量,或$foo = "..."
之类的简单变量,或$symbols["FOO"]
之类的关联数组?
答案 0 :(得分:4)
性能不会有任何显着差异,所以不要担心。做任何更容易维护的事情。
如果它不是太复杂,我个人会使用关联数组。如果事情稍微复杂一些,那就使用gettext。
答案 1 :(得分:1)
想想gettext
这个问题与表现无关 没有语法问题(即常量与变量)会影响性能
答案 2 :(得分:1)
在编译语言中,常量被编译器替换,其常量值会影响性能和内存要求。
在PHP define
中,出了名的慢。所以有人甚至写了一个PHP扩展来解决这个问题:http://pecl.php.net/package/hidef
现在我想到了,这个扩展可以为你的国际化支持考虑一个很好的选择 它允许您在单独的ini文件中定义常量,类似于:
int N = -191
str ABC = "xyz"
float PIE = 3.1419
bool ART = true
易于阅读/理解非程序员(例如翻译)
答案 3 :(得分:0)
您可能想尝试使用Zend_Translate和Zend_Locale以及您需要的任何其他组件(Zend_Date,Zend_Currency等等)。它会在文件空间方面增加你的应用程序的大小,但你可以轻松地缓存你的所有翻译,它允许你从你的翻译的许多不同的fomrats中选择(getext,tmx,csv,xliff等) 。