2011-07-07 36 views
3

我需要编辑一个在函数外部定义的变量(数组),所以我可以在另一个函数中使用它。我能想到的最简单的方法是将它定义为函数内部的全局变量,但我有许多所需的文件也涉及到。全局变量是否会干扰PHP中的所需文件?

全局变量的文档说它可以在程序中的任何地方使用。这是否意味着贯穿所有文件(从所有文件的角度来看它是否是全局的),还是它只是它所在的文件(如果有意义的话,则是本地全局文件)。

我的确在这个网站上发现了一个关于全局变量的问题,建议通过引用来传递它,但是我在其他文件中广泛实现了这个函数,并要求它们在调用中有一个额外的变量,这至少是令人厌恶的。

+0

与其单独评论每个人的帖子,我会这样做: 非常感谢答案,我必须找到另一种方式。让他们访问所有文件是不行的。 – Joshua

回答

0

如果有很多文件中的分组功能需要访问一些常见的状态,那么你需要将它们放到一个类。这几乎是一个类的定义。

或者你可以把数组变成一个类,并有函数调用方法。

也许singletonregistry(2)可能有所帮助。

注意,大多数OOP实现通过为方法的第一个参数,隐藏(C++,PHP)或不(C,Python)的所述对象的引用。

3

如果你定义他们是你的全局变量的函数中,您将参照全局范围的变量,并改变你的函数中作出变化,将可让使用全局变量等功能,可见任何文件只要包含/执行顺序是正确的。

1

如果您声明全局in的文件在内存中,那么该变量可供您使用。但是,如果您没有includerequire全局声明在某个页面上的文件,它将不会提供给您。

订单也很重要。如果您尝试在设置文件的includerequire之前调用全局变量,则该变量将不可用。

1

全局文件共享全局文件。顺便说一句,你应该使用$GLOBALS['variable']来明确你正在访问一个全局变量,而不是用global $variable;来声明它们。