ในการพัฒนาเว็บหรือโปรแกรมใหญ่ ๆ ที่มีความซับซ้อนย่อมต้องมีการใช้การทำงานซ้ำกันหลาย ๆ ครั้งเช่น ในเว็บบอร์ดอาจจะต้องมีการเช็คระดับของผู้ใช้งานก่อนจะอนุญาตให้ใช้งานบางกระทู้ เป็นต้น ซึ่งการใช้โค้ดเดียวซ้ำ ๆ กันนั้นจะทำให้เกิดปัญหาขึ้นในตอนปรับเปลี่ยนแก้ไขโค้ด เพราะต้องแก้ไขโค้ดให้หมดทุกจุด หากแก้ไขไม่ครบทุกจุดจะกลายเป็นบั๊กของโปรแกรมซึ่งอาจส่งผลเสียร้ายแรงได้ ดังนั้นในการเขียนโค้ดจึงจำเป็นต้องรวบรวมการทำงานซ้ำ ๆ ออกมาเขียนเป็นฟังก์ชัน เวลาต้องการใช้งานก็เพียงแค่เรียกชื่อฟังก์ชันนั้น ๆ ก็พอ ซึ่งฟังก์ชันในภาษา PHP มีอยู่ 2 แบบคือ
- ฟังก์ชันสำเร็จรูปของ PHP (Built-In Function): เป็นฟังก์ชันที่มีให้อยู่แล้วในภาษา PHP สามารถเรียกใช้งานได้เลย เช่น print_r() , rand() เป็นต้น
- ฟังก์ชันที่ผู้ใช้งานสร้างขึ้นมาเอง (User Defined Function)
การประกาศฟังก์ชัน
<?php
/********** Syntax **********/
function ชื่อฟังก์ชัน([argument1, argument2, .....])
{
//การทำงาน
}
?>
ก่อนจะเรียกใช้งานฟังก์ชันเราก็จำเป็นต้องสร้างฟังก์ชันขึ้นมาเสียก่อน ซึ่งรูปแบบในการสร้างฟังก์ชันมีดังต่อไปนี้- ชื่อฟังก์ชันจะต้องขึ้นต้นด้วยตัวอักษรหรือเครื่องหมาย Underscore (_) เท่านั้น (ควรตั้งชื่อให้สื่อถึงการทำงานของฟังก์ชันนั้น ๆ ด้วย)
- ชื่อฟังก์ชันไม่เป็น Case-Sensitive นั่นหมายถึง สามารถเรียกใช้งานด้วยอักษรตัวใหญ่หรืออักษรตัวเล็กก็ได้
- argument1, argument2, ..... คือตัวแปรที่ตั้งขึ้นเพื่อรับค่าตอนเรียกใช้งานฟังก์ชัน
- การทำงานของฟังก์ชันจะอยู่ภายในเครื่องหมายปีกกา { ..... }
ฟังก์ชันแบบไม่มีการส่งผ่านค่า
<?php
/********** Syntax **********/
function ชื่อฟังก์ชัน()
{
//การทำงาน
}
/********** ตัวอย่าง **********/
function writeMessage()
{
echo "Hello World<br/>";
}
writeMessage();
writeMESSAGE();
?>
หลังจากประกาศฟังก์ชันแล้ว สามารถเรียกใช้งานฟังก์ชันได้โดยไม่ต้องมีการส่งค่าเข้าไปในฟังก์ชัน ซึ่งจากตัวอย่างจะเห็นว่าสามารถใช้ writeMESSAGE() แทนการเรียกใช้งานฟังก์ชัน writeMessage() ได้ด้วยฟังก์ชันแบบมีการส่งผ่านค่า
<?php
/********** Syntax **********/
function ชื่อฟังก์ชัน([argument1, argument2, .....])
{
//การทำงาน
}
/********** ตัวอย่าง **********/
function processValue($var1, $var2 = 10)
{
echo "$var1 + $var2 = ".($var1+$var2)."<br/>";
}
processValue(5, 20);
processValue(5); // ตัวแปรที่ 2 จะมีค่าเป็นค่าเริ่มต้นตามที่กำหนดไว้
?>
เพื่อให้ฟังก์ชันมีความยืดหยุ่นมากขึ้น เราสามารถส่งผ่านค่าหรือข้อมูลเข้าไปในฟังก์ชันได้ จากตัวอย่างจะเห็นได้ว่าในตอนประกาศฟังก์ชันมีการรับค่าเข้ามาใช้งานภายในฟังก์ชัน ซึ่งเวลาเรียกใช้งานฟังก์ชันก็จำเป็นต้องส่งค่าเข้าไปด้วย โดยฟังก์ชัน processValue() จะมีการรับค่าเข้ามาในฟังก์ชันเป็นจำนวน 2 ตัว และตัวแปรที่ 2 มีการกำหนดค่าเริ่มต้นเอาไว้ด้วย ดังนั้นเวลาเรียกใช้งานฟังก์ชัน processValue() และไม่มีการส่งค่าตัวที่ 2 เข้าไปในฟังก์ชัน ตัวแปรที่ 2 จะมีค่าเป็นค่าเริ่มต้นตามที่กำหนดไว้ฟังก์ชันแบบที่มีการส่งค่ากลับ
<?php
/********** Syntax **********/
function ชื่อฟังก์ชัน([argument1, argument2, .....])
{
//การทำงาน
return someValue;
}
/********** ตัวอย่าง **********/
function processValue($var1, $var2 = 10)
{
$result = $var1 + $var2;
return $result;
}
$x = 25;
$y = 20;
echo "$x + $y = ".processValue($x, $y)."<br/>";
?>
นอกจากจะมีการส่งค่าเข้าไปในฟังก์ชันแล้ว ยังสามารถกำหนดให้ฟังก์ชันคืนค่ากลับมาได้อีกด้วย โดยการใช้คำสั่ง return ตามด้วยค่าที่ต้องการจะส่งกลับไว้ท้ายฟังก์ชัน ซึ่งค่าจะกลับคืนมาแทนที่ในตำแหน่งที่มีการเรียกใช้งานฟังก์ชัน เฉพาะฉะนั้นเราอาจจะมีตัวแปรมารับค่าที่คืนกลับมา*** ข้อควรระวัง: คำสั่ง return จะต้องอยู่ในบรรทัดท้ายสุดของการทำงานทั้งหมดเท่านั้น เนื่องจากเมื่อเจอคำสั่งนี้ฟังก์ชันจะทำหยุดการทำงานที่เหลือและคืนค่ากลับทันที ***
ถึงตรงนี้เพื่อน ๆ ก็พอจะเข้าใจการใช้งานฟังก์ชันแล้ว ทีนี้ถ้ามีโค้ดการทำงานใดที่จำเป็นต้องเรียกใช้งานซ้ำ ๆ บ่อย ๆ ก็ให้เขียนเป็นฟังก์ชัน เพราะนอกจากจะลดจำนวนบรรทัดในการเขียนโค้ดและสามารถนำฟังก์ชันไปใช้เรียกงานซ้ำ ๆ ได้แล้ว ยังช่วยให้ปรับปรุงแก้ไขโค้ดการทำงานได้ง่ายขึ้นโดยการแก้ไขโค้ดแค่ที่เดียวอีกด้วย




0 comments:
แสดงความคิดเห็น