常规PHP类的替代方案

时间:2011-06-02 14:14:49

标签: php object static

通常在创建PHP类时我会做这样的事情

class Foo
{
    public function Foo(){}
    public function RandomFunction(){};
}
global $foo;
$foo = new Foo();
$foo->RandomFunction();

我注意到在网络上人们对课程的全局变量感到皱眉,但如果没有它,我将无法访问其他函数中的类。

现在替代方法是使用静态类:

class Foo
{
    static public function RandomFunction(){}
}
Foo::RandomFunction();

我的问题是,这是对班级全球变量的最佳选择吗?或者有更好的方法可以一起解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

在良好的OO实践中,如果一个类需要访问另一个类的实例,则将对象作为参数传递,然后从那里访问它的属性和方法。

如果你有一个设计良好的对象模型,代码应该相对干净和合乎逻辑,但是如果你不打算创建一个严格的OO应用程序,你可能不应该担心你的类是否在全局范围内。

答案 1 :(得分:2)

将您的物体想象成一辆自行车。你拥有自行车,可以借给任何你想要的人。他们可以使用它并将它归还给您,您将能够跟踪谁对您的自行车做了什么以及何时做了。

但是,如果您的自行车通常可供世界上任何人使用,那么您监控和控制其访问权限的工作将变得更加困难。您将很难跟踪谁在使用您的自行车,何时使用它们以及他们如何(ab)使用它。

传递对象(而不是全局声明它们)允许您对对象及其包含的数据保持更严格的控制。