PHP 函数和引用的内容


引言

在 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

更新时间:2020-09-18

3K+ 浏览

开启你的事业

完成课程后获得认证

开始
广告