2012-12-05 59 views
1

使用$_ENV$GLOBALS有什麼區別?

我希望有一個全局變量來隨時隨地獲取和設置(需要在OO類&普通程序化PHP腳本中可訪問)。我應該使用哪一種?

回答

1

根本不應該使用全局變量,而應該使用依賴注入(即傳遞所有必要的數據作爲函數參數),但是如果必須使用$GLOBALS$_ENV保存來自系統傳遞的PHP腳本之外的數據。雖然它可能有助於超級全球化,但這不是它的意思。

+0

所以答案是去'$ GLOBALS'。 PHP腳本結束執行後,變量值是否會被解除? – Raptor

+1

是的。這不是持久的,它只是全球性的。 – deceze

1

您應該使用$GLOBALS,因爲它的目的是爲了提供一個設置全局變量的地方,這些全局變量可以在您的PHP代碼的任何上下文(函數,類,任何地方)中訪問。

但是,作爲一種良好的編程習慣,不要濫用全局變量,相反,嘗試使用函數和對象方法來處理所需的所有數據,因此代碼更加靈活,請參閱globals are evil

0

對於全局變量的替代方法,請看看Zend如何做到這一點。 Zend註冊表:http://framework.zend.com/manual/1.12/en/zend.registry.html

基本上它是一個類,有一些獲取和設置變量的靜態方法。

我個人比較喜歡這種使用全局的方法。

+1

雖然它基本上是一樣的東西,只是包裝在一個類中。仍然不是你應該過度使用的做法。 – deceze

+0

是的,它基本上是一樣的東西,並且認爲它不是你想要過度使用的東西。我更喜歡Zend方法的原因是它可以很容易地擴展。例如,您可能想要使某些變量爲只讀。正如我所說,這只是一種選擇,而且是個人偏好。 –