Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

วัตถุ PHP และการอ้างอิง


แนะนำตัว

ใน 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