2011-03-17 27 views
2

假設情況: 我在php中運行一個複雜的站點,我使用了很多全局變量。PHP - 全局變量的性能和內存問題

我可以在變量存儲在現有的全球範圍內,說$_REQUEST['userInfo']$_REQUEST['foo']$_REQUEST['bar']等,並投入了大量的不同的東西放入請求範圍(這將是適當的使用,因爲這些數據是指請求本身)。

我可以保持我的大部分功能,使用像global $userInfo, $foo, $bar;線。

是否存在性能問題,或兩種解決方案的內存使用情況存在差異?

有一種輸入法更容易一些......所以有最佳實踐指南嗎?

+0

對不起。你認爲應該問哪種問題? – changokun 2011-03-17 16:17:19

回答

8

您的全局變量已經可以在$GLOBALS['foo'], $GLOBALS['bar']等中找到。這是一個在函數範圍內更清晰的指示,它們來自全局範圍,而不是使用關鍵字global。不應以任何有意義的方式影響性能。

許多人會告訴你,最好的做法是首先避免全局變量,而是通過函數調用和對象構造函數傳遞變量。

+0

不錯,我不知道從$ GLOBALS ['foo']'調用它們可能會清除一些東西。 – changokun 2011-03-18 23:03:53

+0

其實你錯了。 PHP的substr和strlen對通過引用傳遞的變量具有可怕的性能,而且全局變量更糟糕(它沒有任何意義,但後來它是PHP)。 – 2013-10-01 10:24:14

5

兩者都很糟糕。我會建議使用單例,或靜態類。

至於內存使用,不會有明顯的差異。

+0

單身對我來說是一個新想法,謝謝 – changokun 2011-03-18 23:04:25