2010-05-02 102 views
3

我正在开发一个小型项目,并且需要以某种方式实现国际化支持。我正在考虑使用常量来为一个文件中的文本定义很多符号,随后可能会包含这些符号。但是,我不确定使用变量的速度是否更快,或者如果我可以避免使用关联数组而没有太多的性能问题。变量与常量与PHP中的关联数组的关系

什么是在PHP中定义常量更好,性能代价 - 常量使用define("FOO", "..."),或简单的变量,如$foo = "...",或关联数组一样$symbols["FOO"]定义?

回答

4

性能不会有任何明显差异,所以不用担心。做任何事情都会更容易维护。

就我个人而言,如果它不是太复杂,我会去关联数组。如果事情有点复杂,那么使用gettext。

1

gettext

这个问题想想是不是性能相关。
没有语法问题(即常量与变量)会影响性能

0

你可能想尝试使用Zend_Translate和Zend_Locale加上你需要的任何其他组件(Zend_Date,Zend_Currency等)。它会根据文件空间增加应用程序的大小,但您可以轻松地缓存所有翻译,并允许您从多种不同类型的文本中进行选择(getext,tmx,csv,xliff等) 。

1

在编译语言中,常量被编译器替换,其常数值影响性能和内存要求。

在PHP define是臭名昭着的缓慢。正因如此,有人甚至写一个PHP扩展来解决这个问题:http://pecl.php.net/package/hidef


现在我想起来了,这能延长一个不错的选择要考虑你的国际化支持。
它可以让你在一个单独的ini文件中定义的常量,看起来像:

int N  = -191 
str ABC = "xyz" 
float PIE = 3.1419 
bool ART = true 

这是很容易读/理解非程序员(译者例如)