Archive for March, 2011

[PHP] การส่ง parameter แบบ pass by reference

เขียน PHP มาก็ไม่นานและไม่ชำนาญ เพราะส่วนมาก็ใช้พวก CMS หรือ Blog อย่าง WordPress ทำเว็บอย่างเดียว พอมีงานที่ต้องเขียนเอง เนื่องจากติดนิสัยมาจากการเขียน Java อยากส่ง parameter ไปให้ function แบบ pass by reference ลองหาข้อมูลดู สามารถได้ตวามดังนี้ การส่ง parameter แบบปกติจะเป็นแบบ pass by value ดังนั้นถ้าต้องการให้ส่งแบบ pass by reference จะต้องทำดังนี้

public function passByRef(&$param){
	//Code here...
}

จุดที่แตกต่างก็คือ เครื่องหมาย “&” ที่ใส่ก่อนหน้า $param
ตัวอย่างเช่น

<?php
$name = "Supot";
echo "Before : ".$name."<br/>";
passByRef($name);
echo "After : ".$name."<br/>";

function passByRef(&$params){
	$params = "Change value";
}
?>

ผลที่ได้จะเป็น

Before : Supot
After : Change value

โอ้ มันช่างง่ายอะไรเช่นนี้ แต่ตอนใช้งานนี่วุ่นพอควรถ้าไม่จำ พอไปลองหาดูในเอกสารของ PHP แล้วมี function เป็นแบบ pass by reference อยู่พอสมควร