Input:
<?php
$instance = new SimpleClass();
$assigned = $instance;
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // $instance and $reference become null
var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
Output:
NULL
NULL
object(SimpleClass)#1 (1) {
["var"]=>
string(30) "$assigned will have this value"
}
链接:http://php.net/manual/en/language.oop5.basic.php
请以足够的解释答复。为什么$ assigned最后给出该输出。
答案 0 :(得分:0)
实例不是对象,仅仅是指向对象的指针,因此分配是独立的。
$instance = new SimpleClass(); // instance points to instantiated object
$assigned = $instance; // assigned also points to same object
$reference =& $instance; // reference points to instance which points to object
$instance->var = '$assigned will have this value'; // all get set with this
$instance = null; // instance and reference no longer point to the object, assigned still does
如果var_dump()
之后的$instance->var = '$assigned will have this value';
都连续三个{{1}},您会看到每个var都有值。
参考指向实例,该实例指向对象。分配的点指向对象,与实例无关。
希望这会有所帮助!
答案 1 :(得分:0)
也许documentation将帮助您理解参考资料。 检查第一个示例,特别是注释。
您可以轻松地理解 $ reference 和 $ instance 是“绑定”在一起的,而 $ assigned 不是。
希望这会有所帮助。