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+ 瀏覽

開啟你的事業

完成課程後獲得認證

開始
廣告