【问题标题】:PHP classes and static variables - Should I use __destruct()?PHP 类和静态变量 - 我应该使用 __destruct() 吗?
【发布时间】:2011-03-15 02:14:43
【问题描述】:

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

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 然后在foreach() 循环中在$person 上调用unset() 来克服这个问题。

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

【问题讨论】:

    标签: php class oop destructor


    【解决方案1】:

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

    实例变量将被破坏,就像您手动对静态变量执行的操作一样。

    【讨论】:

      猜你喜欢
      • 2013-02-24
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多