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