Используя функцию доступа __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; }