在php中,我有一个简单的类
<?php
class Person {
var $first_name = "factory method";
}
?>
我的问题是如果我有:
$person1 = new Person();
$person2 = $person1;
$person1 = null;
var_dump($person1);
var_dump($person2);
我得到的结果是:$person1=null和$person2都不为null,看起来$person1和$person2根本没有指向同一个东西。
但当我做如下事情时:
$person1 = new Person();
$person2 = $person1;
$person2->first_name = "programming";
echo $person1->first_name;
echo $person2->first_name;
我得到了相同的东西“编程”,所以我认为$person1和$person2都指向相同的东西。
有人能解释一下为什么会这样吗?
最佳答案
不要把指针和引用混在一起。在$person1 = null;
之后,这个变量引用了一些不同的东西,因为您给这个变量分配了一些不同的东西。与
$person1 = $person2 = new Person;
两者都引用同一个对象实例。使用
$person2->first_name
可以更改这个对象,而不是仍然引用该对象的变量。