การใช้งาน Function (ฟังก์ชัน) ใน PHP
Function (ฟังก์ชัน) คือ ชุดคำสั่งที่ถูกสร้างขึ้นเพื่อทำงานเฉพาะอย่าง ช่วยลดการเขียนโค้ดซ้ำ ทำให้โครงสร้างโปรแกรมสะอาด อ่านง่าย ไล่โค้ดได้สะดวก และสามารถเรียกใช้งานซ้ำ ๆ ได้ทุกที่ตามต้องการ
1. รูปแบบพื้นฐานการสร้าง Function
การประกาศฟังก์ชันจะขึ้นต้นด้วยคีย์เวิร์ด function ตามด้วยชื่อฟังก์ชันและเครื่องหมายวงเล็บ
โครงสร้างคำสั่ง:
function function_name() {
// ชุดคำสั่งที่ต้องการให้ทำงาน
}ตัวอย่างการใช้งาน:
<?php
function hello() {
echo "Hello World";
}
hello(); // เรียกใช้งานฟังก์ชัน
?>2. การส่งค่าเข้าไปใน Function (Parameter)
เราสามารถส่งข้อมูลหรือตัวแปรจากภายนอกเข้าไปเพื่อให้ฟังก์ชันนำไปประมวลผลต่อได้ เรียกว่าการส่งค่าผ่าน Parameter
• ฟังก์ชันแบบมี 1 Parameter
<?php
function showName($name) {
echo "ชื่อ : " . $name;
}
showName("Somchai");
?>• ฟังก์ชันแบบมีหลาย Parameter
หากมีพารามิเตอร์มากกว่า 1 ตัว ให้ใช้เครื่องหมายจุลภาค (,) คั่นระหว่างตัวแปร
<?php
function add($a, $b) {
$sum = $a + $b;
echo "ผลรวม = " . $sum;
}
add(10, 20);
?>3. การคืนค่าด้วย return
ใช้คีย์เวิร์ด return เมื่อต้องการให้ฟังก์ชันส่งผลลัพธ์ที่คำนวณเสร็จแล้วกลับออกมาภายนอก เพื่อนำค่าไปฝากไว้ในตัวแปรอื่นหรือประมวลผลต่อ
<?php
function square($num) {
return $num * $num;
}
$result = square(5); // ค่า 25 จะถูกส่งกลับมาเก็บที่ตัวแปร $result
echo $result;
?>4. Function แบบกำหนดค่าเริ่มต้น (Default Value)
เราสามารถกำหนดค่ามาตรฐานเผื่อไว้ได้ ในกรณีที่ผู้เรียกใช้งานไม่ได้ส่งค่า Parameter เข้ามา ฟังก์ชันจะดึงค่าเริ่มต้นนี้ไปใช้ทันที
<?php
function welcome($name = "Guest") {
echo "Welcome " . $name;
}
welcome(); // ไม่ได้ส่งค่าเข้าไป ฟังก์ชันจะใช้คำว่า "Guest"
?>🌟 ประโยชน์ของการใช้งาน Function
- ลดความซ้ำซ้อน: ไม่ต้องเขียนชุดคำสั่งเดิม ๆ ซ้ำกันหลายบรรทัด
- อ่านง่ายและสะอาด: จัดกลุ่มโค้ดให้เป็นระบบ ทำให้แก้ไขและไล่บั๊กได้ง่าย
- บำรุงรักษาสะดวก: หากโค้ดทำงานผิดพลาด แก้ไขจุดเดียวในฟังก์ชัน ก็จะมีผลอัปเดตทุกที่
- Reusability: สามารถย้ายฟังก์ชันไปเรียกใช้ซ้ำในโปรเจกต์หรือไฟล์อื่น ๆ ได้ทันที
- Modular Design: แบ่งแยกหน้าที่การทำงานของโปรแกรมออกเป็นส่วนย่อย ๆ อย่างชัดเจน
🛠️ ตัวอย่างการประยุกต์ใช้งานจริง
ตัวอย่างการสร้างฟังก์ชันคำนวณและตัดเกรดจากคะแนนสะสมที่ส่งเข้ามา:
<?php
function calculateGrade($score) {
if ($score >= 80) {
return "A";
} elseif ($score >= 70) {
return "B";
} elseif ($score >= 60) {
return "C";
} elseif ($score >= 50) {
return "D";
} else {
return "F";
}
}
// เรียกใช้งานพร้อมส่งคะแนน 75 เข้าไป
echo "เกรดของคุณคือ: " . calculateGrade(75);
?>7. การระบุชนิดข้อมูลใน Function (Type Declaration)
ใน PHP ยุคใหม่ (PHP 7 เป็นต้นไป) เราสามารถระบุชนิดข้อมูล (Data Type) ให้กับ Parameter และค่าที่ส่งกลับ (Return) ได้ เพื่อช่วยป้องกันไม่ให้โปรแกรมทำงานผิดพลาดหากมีการส่งข้อมูลผิดประเภทเข้ามา
<?php
// กำหนดให้ $price ต้องเป็น float (ทศนิยม) และ $tax ต้องเป็น int (จำนวนเต็ม)
// และบังคับให้ฟังก์ชันนี้ต้อง return ค่ากลับออกไปเป็น float เท่านั้น (: float)
function calculateTotal(float $price, int $tax): float {
return $price + ($price * ($tax / 100));
}
echo "ราคารวม: " . calculateTotal(100.50, 7);
?>8. ขอบเขตของตัวแปร (Variable Scope)
ตัวแปรที่ถูกสร้างขึ้นภายในฟังก์ชันจะเรียกว่า Local Variable ซึ่งจะใช้งานได้เฉพาะภายในฟังก์ชันนั้น ๆ เท่านั้น ไม่สามารถเรียกใช้จากภายนอกได้ และในทางกลับกัน ฟังก์ชันก็ไม่สามารถดึงตัวแปรข้างนอก (Global Variable) มาใช้ตรง ๆ ได้เช่นกัน
⚠️ สิ่งที่มือใหม่มักพลาด (โค้ดที่เกิด Error):
<?php
$company = "My App"; // Global Variable
function showMessage() {
// โค้ดนี้จะเกิด Error: Undefined variable $company
echo "Welcome to " . $company;
}
showMessage();
?>✅ วิธีแก้ไขที่ถูกต้อง (การใช้คีย์เวิร์ด global):
<?php
$company = "My App";
function showMessage() {
global $company; // ประกาศขอใช้ตัวแปรจากข้างนอก
echo "Welcome to " . $company;
}
showMessage();
?>9. ฟังก์ชันไม่มีชื่อ และ Arrow Function (ฟีเจอร์ขั้นสูง)
ในบางครั้งเราต้องการสร้างฟังก์ชันสั้น ๆ เพื่อใช้งานเพียงครั้งเดียว (เช่น ใช้ร่วมกับฟังก์ชันจัดการอาร์เรย์อย่าง array_map) เราสามารถสร้างฟังก์ชันไม่มีชื่อได้
• Anonymous Function (ฟังก์ชันนิรนาม)
<?php
// สร้างฟังก์ชันเก็บไว้ในตัวแปร $sayHi
$sayHi = function($word) {
return "Say: " . $word;
}; // *** ต้องปิดท้ายด้วยเซมิโคลอน (;)
echo $sayHi("Hello");
?>• Arrow Function (เขียนให้สั้นลงใน PHP 7.4+)
ช่วยลดรูปฟังก์ชันไม่มีชื่อให้สั้นกระชับ โดยใช้คีย์เวิร์ด fn() และส่งค่ากลับได้ทันทีโดยไม่ต้องเขียนคำว่า return
<?php
// ฟังก์ชันคูณสองแบบสั้น
$multiply = fn($num) => $num * 2;
echo $multiply(10); // ส่ง 10 ไปคูณ 2
?>