在PHP中使用__set访问器函数我可以设置标量的值,但不能设置数组的元素。即:
$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;
}
谢谢!
答案 0 :(得分:9)
$p->myarray['title'] = "Hello";
这不会调用__set
魔法;你没有完全设置属性,你正在改变它的一部分。在这种情况下,如果存在这种魔术方法,PHP将调用__get
方法来检索存储在属性$p->myarray
中的数组。请注意,要更改返回的值以对属性产生任何影响,您必须通过引用返回:
function &__get($mbr_name) {
return $this->$mbr_name;
}