PHP中的变量与常量与关联数组的关系

时间:2010-05-02 05:58:59

标签: php performance variables constants associative-array

我正在开展一个小项目,需要以某种方式实施国际化支持。我正在考虑使用常量来为一个文件中的文本定义许多符号,这些符号可以随后包含在内。但是,我不确定使用变量是否更快,或者如果我可以使用关联数组而没有太多的性能影响。

在PHP中定义常量值更好,性能方面 - 使用define("FOO", "...")定义的常量,或$foo = "..."之类的简单变量,或$symbols["FOO"]之类的关联数组?

4 个答案:

答案 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等) 。