Php 魔法方法uuu get和uuu set-来自ZCE的示例
那么…你期待什么 如果您在实际范围内没有访问属性/属性不存在的权限,它将调用Php 魔法方法uuu get和uuu set-来自ZCE的示例,php,magic-methods,Php,Magic Methods,那么…你期待什么 如果您在实际范围内没有访问属性/属性不存在的权限,它将调用\uuu get/\uu set 所以$m->a直接得到“a”$m->b和$m->c先调用\u get(“b”)和\u get(“c”)(在回显“b,c”后返回“b”和“c”) 这同样适用于$m->c=“CC”:它调用\u set(“c”、“CC”),因为$c是受保护(不可访问)的属性。(在回显“c:CC”后将$m->c设置为“CC”)为什么小写字母都在大写字母之前?因为字符串首先被连接起来,需要提取(提取时会立即调用回
\uuu get
/\uu set
所以$m->a
直接得到“a”$m->b
和$m->c
先调用\u get(“b”)
和\u get(“c”)
(在回显“b,c”后返回“b”和“c”)
这同样适用于
$m->c=“CC”
:它调用\u set(“c”、“CC”)
,因为$c
是受保护(不可访问)的属性。(在回显“c:CC”后将$m->c设置为“CC”)为什么小写字母都在大写字母之前?因为字符串首先被连接起来,需要提取(提取时会立即调用回显集中的回显;不等待字符串连接完成)值,并且只有在读取值之后,它才会输出字符串。(尝试将echo语句中的“.”替换为“,”。然后,它的解释就像存在不同的echo语句一样。)
class Magic {
public $a = "A";
protected $b = array("a" => "A", "b" => "B", "c" => "C");
protected $c = array(1,2,3);
public function __get($v) {
echo "$v, ";
return $this->b[$v];
}
public function __set($var, $val) {
echo "$var: $val,";
$this->$var = $val;
}
}
$m = new Magic();
echo $m->a.", ".$m->b.", ".$m->c.",";
$m->c = "CC";
echo $m->a.", ".$m->b.", ".$m->c.",";
b, c, A, B, C,c: CC,b, c, A, B, C,