2010-05-02 81 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 

這是很容易讀/理解非程序員(譯者例如)