php class 设置属性
php class set properties
我无法理解这段代码:
$obj = new stdClass();
$obj->s = new stdClass();
$obj->s->p = new stdClass();
$obj->s->p->v = 1;
$obj->p = $obj->s->p;
echo $obj->s->p->v; //Return 1, OK
echo $obj->p->v; //Return 1, OK
$obj->p->v = 2; //Set the new value
echo $obj->p->v; //Return 2, OK
echo $obj->s->p->v; //Return 2, why??? I didn't set it!
我在没有使用 stdClass(真实 class)的情况下测试了这段代码,结果是一样的。
请给我解释一下!
看到这一行
$obj->p = $obj->s->p;
这意味着您将 $obj->s->p
地址复制到 $obj->p
,因此它们都指向内存中的相同地址。所以当你用 $obj->p
做某事时,它的变化也反映在 $obj->s->p
.
我无法理解这段代码:
$obj = new stdClass();
$obj->s = new stdClass();
$obj->s->p = new stdClass();
$obj->s->p->v = 1;
$obj->p = $obj->s->p;
echo $obj->s->p->v; //Return 1, OK
echo $obj->p->v; //Return 1, OK
$obj->p->v = 2; //Set the new value
echo $obj->p->v; //Return 2, OK
echo $obj->s->p->v; //Return 2, why??? I didn't set it!
我在没有使用 stdClass(真实 class)的情况下测试了这段代码,结果是一样的。
请给我解释一下!
看到这一行
$obj->p = $obj->s->p;
这意味着您将 $obj->s->p
地址复制到 $obj->p
,因此它们都指向内存中的相同地址。所以当你用 $obj->p
做某事时,它的变化也反映在 $obj->s->p
.