Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对象引用_Php_Oop - Fatal编程技术网

Php 对象引用

Php 对象引用,php,oop,Php,Oop,在PHP中,我有一个简单的类 <?php class Person { var $first_name = "factory method"; } ?> 我得到的是:$person1=null和$person2都不是null,看起来$person1和$person2根本没有指向同一个东西 但当我做下面这样的事情时: $person1 = new Person(); $person2 = $person1; $person2->first_name = "program

在PHP中,我有一个简单的类

<?php
class Person {
    var $first_name = "factory method";
}
?>
我得到的是:$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\u name
可以更改此对象,而不是仍然引用该对象的变量。

在第一个示例中将$person1设置为null后,它不再引用您创建的Person对象,而$person2仍然是

在第二个示例中,$person和$person2都引用同一个对象

请参阅上的PHP手册。

请参阅和注释。
$person1 = $person2 = new Person;