我正在PHP5中創建一個Web應用程序。到目前爲止,我有兩個「全局」變量:$ input和$ sql。 $ input是來自$ _GET,$ _POST和$ _COOKIE的驗證和消毒輸入。 $ sql是我的mysql(i)類的一個實例。避免將變量始終傳遞到類
這兩個是幾乎所有其他班級都需要的。這可以通過將它們作爲參數傳遞給每個類的__construct函數來實現。但是,這似乎...笨拙。隨着更多的類特定參數和潛在的未來全球變量,它會導致笨拙的函數調用。
容易和,據我所知,noobie替代將使用全球關鍵字。我不想這樣做。儘管在我的場景(小應用程序)中,它們並不重要,但我卻遇到了全局變量的缺點。但在再次使用它們之前明確標記它們也是笨拙的。
我想一個更優雅的方式:我有一個webapp類,從中擴展所有其他類。這個webapp類擁有我需要在多個其他類中使用的常用功能,但不適用於單獨的類。 如果我將$ input和$ sql作爲靜態變量存儲在此webapp主類中,則它們可以在所有子類中訪問。 但我明白,靜態變量與全局變量一樣多,如果不是更多的話。
這是真的嗎? 我想我是其中的一個人,他們過分地嘲笑了一切,但我喜歡優雅的代碼,這對我的(業餘)眼睛來說看起來很優雅。
不知道是否可以回答你的「問題」,而是「是」我們通過*依賴*(它實際上是這裏最重要的術語)在構造函數(構造函數注入)或方法(方法注入) – zerkms
@zerkms好了。如果這是最佳做法,我會習慣它:o) – Ryan