2011-07-07 43 views
3

我需要編輯一個在函數外部定義的變量(數組),所以我可以在另一個函數中使用它。我能想到的最簡單的方法是將它定義爲函數內部的全局變量,但我有許多所需的文件也涉及到。全局變量是否會干擾PHP中的所需文件?

全局變量的文檔說它可以在程序中的任何地方使用。這是否意味着貫穿所有文件(從所有文件的角度來看它是否是全局的),還是它只是它所在的文件(如果有意義的話,則是本地全局文件)。

我的確在這個網站上發現了一個關於全局變量的問題,建議通過引用來傳遞它,但是我在其他文件中廣泛實現了這個函數,並要求它們在調用中有一個額外的變量,這至少是令人厭惡的。

+0

與其單獨評論每個人的帖子,我會這樣做: 非常感謝答案,我必須找到另一種方式。讓他們訪問所有文件是不行的。 – Joshua

回答

0

如果有很多文件中的分組功能需要訪問一些常見的狀態,那麼你需要將它們放到一個類。這幾乎是一個類的定義。

或者你可以把數組變成一個類,並有函數調用方法。

也許singletonregistry(2)可能有所幫助。

注意,大多數OOP實現通過爲方法的第一個參數,隱藏(C++,PHP)或不(C,Python)的所述對象的引用。

3

如果你定義他們是你的全局變量的函數中,您將參照全局範圍的變量,並改變你的函數中作出變化,將可讓使用全局變量等功能,可見任何文件只要包含/執行順序是正確的。

1

如果您聲明全局in的文件在內存中,那麼該變量可供您使用。但是,如果您沒有includerequire全局聲明在某個頁面上的文件,它將不會提供給您。

訂單也很重要。如果您嘗試在設置文件的includerequire之前調用全局變量,則該變量將不可用。

1

全局文件共享全局文件。順便說一句,你應該使用$GLOBALS['variable']來明確你正在訪問一個全局變量,而不是用global $variable;來聲明它們。