У меня есть класс, похожий на следующий:
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();
}
Это продолжает возвращать имя первого лица, а не все имена для данных идентификаторов. Причина в том, что статическая переменная.
Я преодолел это, добавив функцию __destruct()
для установки $_sqlData
в значение false, затем вызвав unset()
для $person
в цикле foreach()
.
Это хороший способ справиться с этим? Должен ли я подходить к этому по-другому?