2009-01-13 44 views
5

我正在用PHP編寫一個應用程序,該應用程序使用整個腳本中使用的大量全局變量。現在,我有一個配置文件,其中存儲了使用define()函數創建的一系列全局變量,但由於我要這麼多,最好在數據庫中創建一個只包含變量名稱的表和值,並訪問它們具有查詢數據庫,查找變量,返回值並緩存該值供將來使用的功能。存儲全局變量的最佳方法

我也歡迎其他想法來存儲全局變量。

+0

如果您使用的是你覺得有必要問這個問題這麼多的全局變量,有一個很好的機會,你可以通過重構來改進你的代碼。 – EBGreen 2009-01-13 20:53:05

+0

你在常量中存儲什麼樣的數據?配置選項? 有些東西告訴我你不是在編寫面向對象的代碼,這有時候可以,但是當事物處於彼此相關的對象中時,會有很大的能力。你使用常量的事實證實了這一點。 – yaauie 2009-01-13 20:56:08

回答

9

define()函數創建常量,而不是全局變量。應謹慎使用全局變量,因爲它們可能被意外(或惡意)破壞,但常量是完全安全的。

我覺得最簡單的,只是有一個名爲「的config.php」文件,該文件規定了所有的常量,它的速度更快,更簡單。

0

嗯,這取決於你的應用程序的結構。如果在給定的頁面加載中,只需要幾百個變量中的一兩個,那麼基準測試可能會顯示查詢數據庫可能比包含大量配置文件更快。但是,每當用戶想要做任何事情時,都需要警惕用太多的查詢讓數據庫陷入困境。緩存可以減少冗餘請求所增加的開銷,但這就是它的使用範圍。

如果這些變量大多是短字符串或布爾標誌,我認爲你的答案將在很大程度上停留在你就可以保持很好的東西。如果這些變量很少變化並且總是手動更改,那麼結構良好的.ini文件比大型數據庫更容易維護。如果這些變量不斷變化並且永遠不變,那麼將所有變量加載到數據庫中可能會更聰明。

就我個人而言,我發現自己在這兩種情況下,我已經使用這兩種方法。如果你真的優柔寡斷,你總是可以做一些基準測試。計算從數據庫中提取配置信息的頁面加載時間,然後使用.ini文件(或完整爲define() s的.php文件)計算頁面加載時間。

(和迂腐地講,define()在全球範圍內,而不是全局變量創建常量。)

相關問題