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