บทนำ
ใน PHP , ฟังก์ชันสามารถทำให้คืนค่าแบบอ้างอิง (return a reference) ได้ นี่มีประโยชน์ในการค้นหาว่าตัวแปรไหนควรผูกกับอ้างอิง เพื่อกำหนดฟังก์ชันที่คืนค่าอ้างอิง ให้นำหน้าชื่อฟังก์ชันด้วยเครื่องหมาย &
ตัวอย่าง
ในตัวอย่างต่อไปนี้ myfunction() ถูกกำหนดให้คืนค่าอ้างอิง มันมีตัวแปรสแตติกซึ่งอ้างอิงถูกคืนและมอบหมายให้ตัวแปร global ค่าของตัวแปรสแตติกท้องถิ่นจะเปลี่ยนไปด้วยเมื่ออ้างอิงภายนอกถูกมอบหมายค่าต่างออกไป
ตัวอย่าง
<?php function &myfunction(){ static $x=10; echo "x Inside function: ",$x,"\n"; return $x; } $a=&myfunction(); //มีอ้างอิงถึง 4x ในฟังก์ชัน echo "returned by reference: ", $a, "\n"; $a=$a+10; //เพิ่มตัวแปรในฟังก์ชันด้วย $a=&myfunction(); ?>
ผลลัพธ์
x Inside function: 10 returned by reference: 10 x Inside function: 20
เมธอดที่คืนค่าอ้างอิง (method returning reference)
คลาสก็สามารถมีเมธอดที่คืนค่าอ้างอิงได้ นี่ช่วยให้เปลี่ยนค่าตัวแปร instance private จากนอกคลาสได้
ตัวอย่าง
<?php class myclass{ private $val; function __construct($x){ $this->val=$x; } function &getbyref(){ return $this->val; } function getbyval(){ return $this->val; } } $a=new myclass(10); $b=&$a->getbyref(); $b=100; echo "Value of private property: ", $a->getbyval(); ?>
ผลลัพธ์
Value of private property: 100