แนะนำตัว
ใน PHP ออบเจ็กต์จะถูกส่งผ่านโดยการอ้างอิงโดยค่าเริ่มต้น ในที่นี้ การอ้างอิงคือนามแฝง ซึ่งช่วยให้สองตัวแปรที่แตกต่างกันสามารถเขียนเป็นค่าเดียวกันได้ ตัวแปรอ็อบเจ็กต์ไม่มีตัวอ็อบเจ็กต์เป็นค่า มีเฉพาะตัวระบุอ็อบเจ็กต์ที่อนุญาตให้ใช้ซึ่งพบอ็อบเจ็กต์จริง เมื่อวัตถุถูกส่งโดยอาร์กิวเมนต์ ส่งคืนหรือกำหนด ตัวแปรต่างๆ จะไม่ใช่นามแฝง แต่จะเก็บสำเนาของตัวระบุซึ่งชี้ไปที่วัตถุเดียวกัน
ตัวอย่าง
PHP มี spl_object_hash() ฟังก์ชันที่ส่งคืน 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