我正在开发一个小型项目,并且需要以某种方式实现国际化支持。我正在考虑使用常量来为一个文件中的文本定义很多符号,随后可能会包含这些符号。但是,我不确定使用变量的速度是否更快,或者如果我可以避免使用关联数组而没有太多的性能问题。变量与常量与PHP中的关联数组的关系
什么是在PHP中定义常量更好,性能代价 - 常量使用define("FOO", "...")
,或简单的变量,如$foo = "..."
,或关联数组一样$symbols["FOO"]
定义?
我正在开发一个小型项目,并且需要以某种方式实现国际化支持。我正在考虑使用常量来为一个文件中的文本定义很多符号,随后可能会包含这些符号。但是,我不确定使用变量的速度是否更快,或者如果我可以避免使用关联数组而没有太多的性能问题。变量与常量与PHP中的关联数组的关系
什么是在PHP中定义常量更好,性能代价 - 常量使用define("FOO", "...")
,或简单的变量,如$foo = "..."
,或关联数组一样$symbols["FOO"]
定义?
性能不会有任何明显差异,所以不用担心。做任何事情都会更容易维护。
就我个人而言,如果它不是太复杂,我会去关联数组。如果事情有点复杂,那么使用gettext。
这个问题想想是不是性能相关。
没有语法问题(即常量与变量)会影响性能
你可能想尝试使用Zend_Translate和Zend_Locale加上你需要的任何其他组件(Zend_Date,Zend_Currency等)。它会根据文件空间增加应用程序的大小,但您可以轻松地缓存所有翻译,并允许您从多种不同类型的文本中进行选择(getext,tmx,csv,xliff等) 。
在编译语言中,常量被编译器替换,其常数值影响性能和内存要求。
在PHP define
是臭名昭着的缓慢。正因如此,有人甚至写一个PHP扩展来解决这个问题:http://pecl.php.net/package/hidef
现在我想起来了,这能延长一个不错的选择要考虑你的国际化支持。
它可以让你在一个单独的ini文件中定义的常量,看起来像:
int N = -191
str ABC = "xyz"
float PIE = 3.1419
bool ART = true
这是很容易读/理解非程序员(译者例如)