Я сделал обширный поиск, и нашел это:Изменяя переменный класс, что это массив в PHP
&__get() issues, again. Major frustration is afoot
Однако ни один из примеров, приведенных на самом деле не работает.
У меня есть объект, который имеет переменную, которая представляет собой многомерный массив. Мне нужно изменить значение ключа в этом массиве.
Пример:
foreach ($code->files as $index => $value)
{
if (strcmp($code->files[$index]['id'], $fileid) == 0)
{
$code->files[$index]['title'] = "Test";
$code->save();
}
}
Приведенный выше код делает генерирует ошибку:
Notice: Indirect modification of overloaded property CodeDocument::$files has no effect in /var/www/deletefile.php on line 57
Я пробовал все примеры в ссылке выше ссылочного нити, и ни один из них не работает. Они все порождают ошибку выше.
Я использую библиотеку готовых классов (phpillow), но я попытался изменить функцию __get на & __get, и она подавляет ошибку выше, но переменная, которую я пытаюсь изменить, по-прежнему не получает нового значения.
Я не уверен, что я делаю это правильно, но у меня полная потеря. Выполнение этого без размещения массива в качестве переменной класса потребует много рефакторинга, которое я бы предпочел избежать, если это вообще возможно.
Любая помощь ВОЗМОЖНО высоко ценится.
Не могли бы вы размещаете код 'CodeDocument'? – xdazz
Можете ли вы показать свою функцию '__set()'? – Touki
Вы не видите самую важную часть: что означает '__get'? – Jon