PHP:$ _ENV和$ GLOBALS的区别

时间:2012-12-05 09:05:53

标签: php

使用$_ENV$GLOBALS有什么区别?

我希望有一个全局变量来随时随地获取和设置(需要在OO类和简单的过程PHP脚本中访问)。我应该使用以上哪个?

3 个答案:

答案 0 :(得分:1)

你应该使用$GLOBALS作为它的目的,提供一个地方来设置可以在你的PHP代码的任何上下文中访问的全局变量(在函数内部,类,任何地方)。 / p>

但是,作为一个优秀的编程实践,不要滥用全局变量,相反,请尝试使用您的函数和对象方法在上下文中使用它们所需的所有数据,因此您的代码更加灵活,请参阅globals are evil

答案 1 :(得分:1)

你根本不应该使用全局变量,而是使用依赖注入(即将所有必要的数据作为函数参数传递),但如果必须,请使用$GLOBALS$_ENV保存来自系统传递的PHP脚本之外的数据。虽然它可能起到超全球化的作用,但这并不是它的意义所在。

答案 2 :(得分:0)

对于全局变量的替代方法,请看一下Zend如何做到这一点。 Zend注册表:http://framework.zend.com/manual/1.12/en/zend.registry.html

基本上它是一个带有一些静态方法的类,用于获取和设置变量。

我个人更喜欢这种使用全局变量的方法。