PHP 对象和引用

phpserver side programmingprogramming更新于 2025/8/19 19:37:17

简介

在 PHP 中,对象默认通过引用传递。这里,引用是一个别名,允许两个不同的变量写入相同的值。对象变量不包含对象本身作为值。它只包含一个对象标识符,可以使用该标识符找到实际的对象。当对象通过参数传递、返回或赋值时,不同的变量不再是别名,而是持有标识符的副本,指向同一个对象。

示例

PHP 有一个 spl_object_hash() 函数,它返回对象的唯一哈希 ID。在下面的代码中,两个引用同一个对象的对象变量返回相同的 ID

示例

<?php
class test1{
   public $name;
}
$obj1=new test1();
echo "ID of obj1: " . spl_object_hash($obj1) . "
"; $obj2=$obj1; echo "ID of obj2: " . spl_object_hash($obj2); ?>

输出

结果显示两个变量的 ID 相同

ID of obj1: 000000004355dda6000000006f04b1a7
ID of obj2: 000000004355dda6000000006f04b1a7

当我们创建对象变量的引用时,通过在名称前加上前缀 &,属性的任何更改都会自动反映在引用变量中

示例

<?php
class test1{
   public $name;
}
$obj1=new test1();
echo "ID of obj1: " . spl_object_hash($obj1) . "
"; $obj2=&$obj1; echo "ID of obj2: " . spl_object_hash($obj2) . "
"; $obj1->name="Amar"; echo "name: " .$obj2->name; ?>

输出

以上代码现在返回以下输出的名称

ID of obj1: 00000000163cf0b8000000003ad0ed93
ID of obj2: 00000000163cf0b8000000003ad0ed93
name: Amar

相关文章