PHP神奇函数uuu get,uuu set执行顺序

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

对于以下代码,我期望

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 __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
存在。。。我所说的存在是指可接近。