php - 对象引用

标签 php oop

在 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 根本不为空,$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 可以更改此对象,而不是变量,它仍然引用该对象。

关于php - 对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5602324/

相关文章:

php - 如何检测类属性是私有(private)的还是 protected

php - Symfony/Doctrine : fetching data as object

php - 启用 SSL 但网站拒绝安全加载

php - 对于死链接,我们应该考虑哪些 HTTP 状态代码

php - mysqli_fetch_array() 期望参数 1 为 mysqli_result, boolean 值

PHP,命名空间中的新变量类

javascript - 重写一个javascript方法

php - 从数组创建 SQL

PHP面向对象问题

oop - 如何在抽象派生类型中设计 PRIVATE OVERRIDABLE 过程?