PHP神奇函数uuu get,uuu set执行顺序
对于以下代码,我期望 A、 b,b,c,c,c:CC,A,b,b,c,c 作为输出。但是我越来越 b、 c,A,b,c,c:CCb,c,A,b,c 谁能给我解释一下,它是怎么工作的 这是我的密码PHP神奇函数uuu get,uuu set执行顺序,php,Php,对于以下代码,我期望 A、 b,b,c,c,c:CC,A,b,b,c,c 作为输出。但是我越来越 b、 c,A,b,c,c:CCb,c,A,b,c 谁能给我解释一下,它是怎么工作的 这是我的密码 class Magic { public $a = "A"; protected $b = array("a"=>"A","b"=>"B","c"=>"C"); protected $c = array(1,2,3); public function
class Magic
{
public $a = "A";
protected $b = array("a"=>"A","b"=>"B","c"=>"C");
protected $c = array(1,2,3);
public function __get($name)
{
echo "$name,";
return $this->b[$name];
}
public function __set($name, $value)
{
echo "$name: $value";
$this->$name = $value;
}
}
$m = new Magic();
echo $m->a.",".$m->b.",".$m->c.",";
$m->c = "CC";
echo $m->a.",".$m->b.",".$m->c;
首先,
\uu get
方法不用于$m->a
。magic方法仅用于获取不可访问的属性。由于a
是一个公共属性,因此它是以正常方式检索的
\uu get
方法的输出不与值交替的原因是echo
参数的整个值是在打印任何内容之前计算出来的。所以
echo $m->a.",".$m->b.",".$m->c.",";
相当于
$temp = $m->a.",".$m->b.",".$m->c.",";
echo $temp;
首先,它获取所有3个属性的值,调用
$m->b
和$m->c
的神奇方法,这些方法打印属性名称并从$b
数组返回值。然后它连接所有返回值,最后打印连接的结果。首先,\u get
方法不用于$m->a
。magic方法仅用于获取不可访问的属性。由于a
是一个公共属性,因此它是以正常方式检索的
\uu get
方法的输出不与值交替的原因是echo
参数的整个值是在打印任何内容之前计算出来的。所以
echo $m->a.",".$m->b.",".$m->c.",";
相当于
$temp = $m->a.",".$m->b.",".$m->c.",";
echo $temp;
首先,它获取所有3个属性的值,调用
$m->b
和$m->c
的神奇方法,这些方法打印属性名称并从$b
数组返回值。然后它连接所有返回的值,最后打印连接的结果。\uuuu get
或\uuu set
仅用于不存在的属性,public$a
存在。。。“存在”是指可访问。\uuu get
或\uu set
仅用于不存在的属性,public$a
存在。。。我所说的存在是指可接近。