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
广告