บทเรียน php การเรียกใช้ Functions
function โดยทั่วไปฟังก์ชั่นแบ่งออกได้เป็น 2 แบบ คือ แบบคืนค่า กับ ไม่คืนค่า
โดยแบบคืนค่า กล่าวคือ มีค่าที่ return กลับมานั้นเอง โดย php จะใช้คำสั่ง return ในการคืนค่า ดูตัวอย่างกันเลยดีกว่าครับ
จากตัวอย่างผมจะสร้าง function ในการบวกตัวเลข 2 จำนวน โดยการส่งค่าเข้าไปในฟังก์ชั่น
-----------------------------------------------------------------
<?php
function addNumber($x, $y){
$n = $x + $y;
return $n;
}
$result = addNumber(4, 5);
echo $result; //ผลลัพธ์ที่ได้คือ 9
?>
-----------------------------------------------------------------
ต่อไปเป็นตัวอย่าง function แบบไม่คืนค่า จะเป็นการเขียน function ในการติดต่อฐานข้อมูล และ เลือกฐานข้อมูลใน function เดียวกัน
-----------------------------------------------------------------
<?php
function myConnectDB($host, $user, $pass, $dbname){
mysql_connect($host, $user, $pass);
mysql_select_db($dbname);
}
//เรียกใช้ function
myConnectDB("localhost", "bigquery", "passwd", "bigquery_db");
?>
-----------------------------------------------------------------
อย่างนี้เป็นต้น จากตัวอย่างเป็นตัวอย่างง่ายๆ เพื่อให้เข้าใจถึงความแตกต่างระหว่าง function ทั้ง 2 แบบ และจากตัวอย่างจะเห็นการส่งค่าเข้าไปในฟังก์ชั่น เรียกว่า parameter
Parameters
ลักษณะการใช้งาน parameters ใน php มีอยู่ 2 อย่างด้วยกันคือ pass by value กับ pass by referance
เริ่มกันที่ pass by value กันก่อน ให้เข้าใจง่ายๆ ว่า pass by value ก็คือ การส่งค่าเข้าไปใน function นั้นเอง อาจเป็น ค่าโดยตรง หรือจะเป็นตัวแปรก็ได้ โดยตัวอย่างได้จากด้านบน เป็นการ ส่งค่า parameters แบบ pass by value
ส่วน parameter แบบ pass by referance นั้นจะทำการคืนค่ากลับมาให้กับตัวแปรตัวนั้น โดยค่าจะเปลี่ยนไปตามค่าที่ใช้ในฟังก์ชั่นนั้นด้วย โดยใช้สัญลักษณ์ & ไว้หน้าตัวแปร เช่น ต้องการหาค่า บวก และ ค่าลบ ใน function เดียวกัน
-----------------------------------------------------------------
<?php
function addAndMinus($x, $y, &$add, &$minus){
$add = $x+$y;
$minus = $x - $y;
}
addAndMinus(9, 5, $a, $m);
echo $a; //ค่าที่ได้คือ 14
echo $m;
//ค่าที่ได้คือ 4
?>
-----------------------------------------------------------------
Pass by value vs. Pass by reference อีกหนึ่งตัวอย่าง เพื่อเป็นการเปรียบเทียบ ระหว่า parameter ทั้ง 2 แบบ
| Pass by value |
Pass by reference |
<?php
function pass_by_value($param) {
push_array($param, 4, 5);
}
$ar = array(1,2,3);
pass_by_value($ar);
print_r($ar)
?>
ผลลัพธ์ที่ได้คือ
Array
(
[0] => 1
[1] => 2
[2] => 3
) |
<?php
function pass_by_reference(&$param) {
push_array($param, 4, 5);
}
$ar = array(1,2,3);
pass_by_reference($ar);
print_r($ar);
?>
ผลลัพธ์ที่ได้คือ
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
) |