【发布时间】:2012-02-11 13:46:16
【问题描述】:
非常简单的问题,是否可以将一个从类外部检索到的变量设为“全局”到整个类,这样我就不必在每个方法的开头调用“全局 $variable” ?
这是我目前正在做的事情:
class test{
public function testing(){
global $globalVariable,
// Do something
}
public function testing_two(){
global $globalVariable,
// Do something
}
}
换句话说,我可以将变量导入构造函数,从而使整个类都可以访问它们,而不必为每个方法调用“全局”吗?
更新
不确定我是否对我想要实现的目标说得太清楚了。请看下面:
$globalVariable = 'hello';
class test{
public function testing(){
global $globalVariable,
// Do something
}
public function testing_two(){
global $globalVariable,
// Do something
}
}
【问题讨论】:
-
只需将其作为参数传递给构造函数并将其分配给私有属性即可。
-
@FelixKling 如果他需要一个真正的全局变量,这将中断,因为它在类之外被更改。想到全局数据库连接资源。
-
@Eugen:无论如何,全局变量都是一个糟糕的设计决策,恕我直言。如果代码增长,代码将变得更加难以维护和重构。
-
@Ben:为什么它们是全球性的?您是否在脚本运行期间更改数据库连接?为什么不将它作为参数传递给构造函数(依赖注入)。有许多设计模式可以避免使用全局变量(有充分的理由)。
-
@BenCarey:你大错特错。继续这样做,你会学到很多东西。