2010-06-20 42 views
4

在PHP中使用__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; 
} 

谢谢!

回答

9
$p->myarray['title'] = "Hello"; 

这不叫__set魔法;你不是完全设置属性,你正在改变它的一部分。在这种情况下,如果存在这种魔术方法,PHP将调用__get方法来检索存储在属性$p->myarray中的数组。请注意,要更改返回的值以便对属性产生任何影响,您必须通过参考返回:

function &__get($mbr_name) { 
    return $this->$mbr_name; 
}