oop — установка переменной для экземпляра объекта в переполнении стека

Хорошо, я рву свои волосы здесь …

Я явно скучаю по чему-то простому. Я пытаюсь предотвратить попадание в базу данных, поэтому я использую простую функцию, которая проверяет, есть ли в объекте наличествующий объект, и если да, возвращает экземпляр, а если нет, отправляет и получает его из база данных.

private function RetrieveFromMemory($Id, $Object)
{
$mymap=$this->ColumnMap;
$key = $this->Key;
foreach($this->InMemory as $v) {
if($v->$key == $Id) {
/*
foreach (get_object_vars($v) as $key => $value) {
$Object->$key = $value;
}
*/
$Object = $v;
trace('Retrieved '.get_class($v).' from memory');
return true;

}
}
return false;
}

Если я раскомментирую foreach, я смогу заполнить свойства нормально, но это новый экземпляр. Я хочу тот же экземпляр, но с использованием $Object = $v;
не устанавливает $Object в том же случае, что и $v… Он просто оставляет оригинальный пустой объект.

0

Решение

Вы пытаетесь изменить значение параметра $Object внутри функции и ожидая, что это изменение будет видно после завершения функции.

PHP передает аргументы по значению по умолчанию, так что вам нужно

  1. Измените функцию на вернуть значение, которое он нашел, и измените, как вы его называете; или же
  2. Скажите PHP передать параметры по ссылке: function RetrieveFromMemory($Id, &$Object)
2

Другие решения

Ты возвращаешься trueне $v,

0

По вопросам рекламы [email protected]