首先,很抱歉这个愚蠢的问题,但我正在阅读php.net中的一篇文章,但我无法理解它到底在说什么。
<?php
class SimpleClass
{
// property declaration
public $var = 'a default value';
// method declaration
public function displayVar() {
echo $this->var;
}
}
?>
<?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);
?>
这会输出:
NULL
NULL
object(SimpleClass)#1 (1) {
["var"]=>
string(30) "$assigned will have this value"
}
$instance 和 $reference 指向同一个地方,我明白了,我明白为什么我们会为它们得到 NULL 和 NULL。
但是 $assigned 呢?它还指向存储 $instance 的地方吗?为什么我们在使用$instance->var
的时候会影响$assigned,但是当我们设置$instance为null时,对于$assigned却没有变化?
我以为这三个变量都指向内存中的一个地方,但显然我错了。您能否解释一下到底发生了什么以及 $assigned 是什么?非常感谢你!