PHP对象和参考

2023年11月26日09:55:11

介绍

在PHP中,默认情况下,对象是通过引用传递的。在这里,引用是一个别名,它允许两个不同的变量写入相同的值。对象变量不包含对象本身作为值。它仅包含一个对象标识符,允许使用它找到实际对象。当通过参数发送,返回或分配对象时,不同的变量不是别名-而是持有标识符的副本,指向相同的对象。

示例

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

示例

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

输出结果

上面的代码现在在输出之后返回名称

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

  • 更新时间:2023年11月26日09:55:11 ,共 864 字。