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

