วันพฤหัสบดีที่ 22 ธันวาคม พ.ศ. 2559

[PHP] ตอนที่ 8: Function


          ในการพัฒนาเว็บหรือโปรแกรมใหญ่ ๆ ที่มีความซับซ้อนย่อมต้องมีการใช้การทำงานซ้ำกันหลาย ๆ ครั้งเช่น ในเว็บบอร์ดอาจจะต้องมีการเช็คระดับของผู้ใช้งานก่อนจะอนุญาตให้ใช้งานบางกระทู้ เป็นต้น ซึ่งการใช้โค้ดเดียวซ้ำ ๆ กันนั้นจะทำให้เกิดปัญหาขึ้นในตอนปรับเปลี่ยนแก้ไขโค้ด เพราะต้องแก้ไขโค้ดให้หมดทุกจุด หากแก้ไขไม่ครบทุกจุดจะกลายเป็นบั๊กของโปรแกรมซึ่งอาจส่งผลเสียร้ายแรงได้ ดังนั้นในการเขียนโค้ดจึงจำเป็นต้องรวบรวมการทำงานซ้ำ ๆ ออกมาเขียนเป็นฟังก์ชัน เวลาต้องการใช้งานก็เพียงแค่เรียกชื่อฟังก์ชันนั้น ๆ ก็พอ ซึ่งฟังก์ชันในภาษา PHP มีอยู่ 2 แบบคือ
  1. ฟังก์ชันสำเร็จรูปของ PHP (Built-In Function): เป็นฟังก์ชันที่มีให้อยู่แล้วในภาษา PHP สามารถเรียกใช้งานได้เลย เช่น print_r() , rand() เป็นต้น
  2. ฟังก์ชันที่ผู้ใช้งานสร้างขึ้นมาเอง (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 จะต้องอยู่ในบรรทัดท้ายสุดของการทำงานทั้งหมดเท่านั้น เนื่องจากเมื่อเจอคำสั่งนี้ฟังก์ชันจะทำหยุดการทำงานที่เหลือและคืนค่ากลับทันที ***

          ถึงตรงนี้เพื่อน ๆ ก็พอจะเข้าใจการใช้งานฟังก์ชันแล้ว ทีนี้ถ้ามีโค้ดการทำงานใดที่จำเป็นต้องเรียกใช้งานซ้ำ ๆ บ่อย ๆ ก็ให้เขียนเป็นฟังก์ชัน เพราะนอกจากจะลดจำนวนบรรทัดในการเขียนโค้ดและสามารถนำฟังก์ชันไปใช้เรียกงานซ้ำ ๆ ได้แล้ว ยังช่วยให้ปรับปรุงแก้ไขโค้ดการทำงานได้ง่ายขึ้นโดยการแก้ไขโค้ดแค่ที่เดียวอีกด้วย


----- สารบัญ -----


Share:

0 comments:

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