Хорошо, я рву свои волосы здесь …
Я явно скучаю по чему-то простому. Я пытаюсь предотвратить попадание в базу данных, поэтому я использую простую функцию, которая проверяет, есть ли в объекте наличествующий объект, и если да, возвращает экземпляр, а если нет, отправляет и получает его из база данных.
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
… Он просто оставляет оригинальный пустой объект.
Вы пытаетесь изменить значение параметра $Object
внутри функции и ожидая, что это изменение будет видно после завершения функции.
PHP передает аргументы по значению по умолчанию, так что вам нужно
function RetrieveFromMemory($Id, &$Object)
Ты возвращаешься true
не $v
,