まず、ばかげた質問で申し訳ありませんが、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に変更がないのはなぜですか。
3つの変数すべてがメモリ内の1つの場所を指していると思いましたが、明らかに私は間違っています。正確に何が起こり、$assignedとは何であるかを説明していただけますか?どうもありがとうございます!