Используя функцию доступа __set в PHP, я могу установить значение скаляра, но не элемент массива. То есть:
$p->scalavar = "Hello"; // This works fine $p->myarray['title'] = "Hello"; //This does not work Мой помощник выглядит следующим образом:
 function __set($mbr_name, $mbr_value) { $this->$mbr_name = $mbr_value; } 
Благодаря!
 $p->myarray['title'] = "Hello"; 
  Это не вызывает __set магии __set ;  вы точно не устанавливаете свойство, вы меняете его часть.  В этом случае PHP вызовет метод __get для извлечения массива, хранящегося в свойстве $p->myarray если такой магический метод существует.  Обратите внимание, что для изменения возвращаемого значения, имеющего какое-либо влияние на свойство, вы должны вернуться по ссылке: 
 function &__get($mbr_name) { return $this->$mbr_name; }