【发布时间】: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