【发布时间】:2011-06-02 14:14:49
【问题描述】:
通常在创建 PHP 类时,我会这样做
class Foo
{
public function Foo(){}
public function RandomFunction(){};
}
global $foo;
$foo = new Foo();
$foo->RandomFunction();
我注意到在网络上人们对类的全局变量不满意,但没有它我将无法在其他函数中访问该类。
现在的替代方法是使用静态类:
class Foo
{
static public function RandomFunction(){}
}
Foo::RandomFunction();
我的问题是,这是类全局变量的最佳替代方案吗?或者有没有更好的方法来一起解决这一切?
【问题讨论】:
-
我不太确定你的目标是什么。为什么
$foo在您的示例中需要是全局的?如果要在其他函数中访问该实例,则应将其作为参数传递。我感觉您正在使用类作为(任意)函数的容器...... -
如果您使用的是 PHP5,请开始使用
__construct。 -
例如,wordpress 在其函数中使用全局 $foo,因此可以从其他函数或类访问 $foo 类。将其作为参数传递听起来是个坏主意。