PHP классы и статические переменные - я должен использовать __destruct ()? - PullRequest
1 голос
/ 13 июля 2010

У меня есть класс, похожий на следующий:

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().

Это хороший способ справиться с этим? Должен ли я подходить к этому по-другому?

1 Ответ

4 голосов
/ 13 июля 2010

Почему вы используете статическую переменную? Есть ли что-то, для чего вам это нужно? Кажется, что не использование статической переменной var для $ _sqlData, просто использование переменной экземпляра, даст вам тот же результат, если только вы не покажете нам что-то.

Переменная экземпляра будет уничтожена, как вы делаете это вручную со своей статической переменной.

...