PHP Accessor函数和数组

Kim*_*nce 4 php

在PHP中使用__set访问器函数我可以设置标量的值,但不能设置数组的元素.即:

$p->scalavar = "Hello";  // This works fine
$p->myarray['title'] = "Hello";  //This does not work
Run Code Online (Sandbox Code Playgroud)

我的访问者如下:

function __set($mbr_name, $mbr_value) {
    $this->$mbr_name = $mbr_value;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Art*_*cto 9

$p->myarray['title'] = "Hello"; 
Run Code Online (Sandbox Code Playgroud)

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

function &__get($mbr_name) {
    return $this->$mbr_name;
}
Run Code Online (Sandbox Code Playgroud)