PHP类和静态变量 - 我应该使用__destruct()吗?

时间:2010-07-13 01:13:13

标签: php class oop destructor

我有一个类似于以下的类:

class Person
{
    private static $_sqlData;

    public function __construct($id)
    {
        if (!self::$_sqlData)
        {
        self::$_sqlData = // GET THE DB STUFF
        }
    }

    public function getName()
    {
        return self::$_sqlData['name'];
    }
}

这一直很好,直到我需要把它放在一个循环中。

foreach ($ids as $id)
{
    $person = new Person($id);
    echo $person->getName();
}

这将继续返回第一个人名,而不是给定ID的所有名称。原因是静态变量。 我已经通过添加__destruct()函数将$_sqlData设置为false,然后在unset()循环中调用$person上的foreach()来解决此问题。

这是处理这个问题的好方法吗?我应该以不同的方式接近这个吗?

1 个答案:

答案 0 :(得分:4)

为什么使用静态变量?你需要这个吗?似乎没有为$ _sqlData使用静态var,只是使用一个实例变量,会给你相同的结果,除非你没有向我们展示。

实例变量将会破坏,就像您手动执行静态变量一样。