Function (ฟังก์ชัน) คือ ชุดคำสั่งที่ถูกสร้างขึ้นเพื่อทำงานเฉพาะอย่าง ช่วยลดการเขียนโค้ดซ้ำ ทำให้โครงสร้างโปรแกรมสะอาด อ่านง่าย ไล่โค้ดได้สะดวก และสามารถเรียกใช้งานซ้ำ ๆ ได้ทุกที่ตามต้องการ
การประกาศฟังก์ชันจะขึ้นต้นด้วยคีย์เวิร์ด function ตามด้วยชื่อฟังก์ชันและเครื่องหมายวงเล็บ
โครงสร้างคำสั่ง:
function function_name() {
// ชุดคำสั่งที่ต้องการให้ทำงาน
}ตัวอย่างการใช้งาน:
<?php
function hello() {
echo "Hello World";
}
hello(); // เรียกใช้งานฟังก์ชัน
?>เราสามารถส่งข้อมูลหรือตัวแปรจากภายนอกเข้าไปเพื่อให้ฟังก์ชันนำไปประมวลผลต่อได้ เรียกว่าการส่งค่าผ่าน Parameter
<?php
function showName($name) {
echo "ชื่อ : " . $name;
}
showName("Somchai");
?>หากมีพารามิเตอร์มากกว่า 1 ตัว ให้ใช้เครื่องหมายจุลภาค (,) คั่นระหว่างตัวแปร
<?php
function add($a, $b) {
$sum = $a + $b;
echo "ผลรวม = " . $sum;
}
add(10, 20);
?>ใช้คีย์เวิร์ด return เมื่อต้องการให้ฟังก์ชันส่งผลลัพธ์ที่คำนวณเสร็จแล้วกลับออกมาภายนอก เพื่อนำค่าไปฝากไว้ในตัวแปรอื่นหรือประมวลผลต่อ
<?php
function square($num) {
return $num * $num;
}
$result = square(5); // ค่า 25 จะถูกส่งกลับมาเก็บที่ตัวแปร $result
echo $result;
?>เราสามารถกำหนดค่ามาตรฐานเผื่อไว้ได้ ในกรณีที่ผู้เรียกใช้งานไม่ได้ส่งค่า Parameter เข้ามา ฟังก์ชันจะดึงค่าเริ่มต้นนี้ไปใช้ทันที
<?php
function welcome($name = "Guest") {
echo "Welcome " . $name;
}
welcome(); // ไม่ได้ส่งค่าเข้าไป ฟังก์ชันจะใช้คำว่า "Guest"
?>ตัวอย่างการสร้างฟังก์ชันคำนวณและตัดเกรดจากคะแนนสะสมที่ส่งเข้ามา:
<?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);
?>ใน 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);
?>ตัวแปรที่ถูกสร้างขึ้นภายในฟังก์ชันจะเรียกว่า 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();
?>ในบางครั้งเราต้องการสร้างฟังก์ชันสั้น ๆ เพื่อใช้งานเพียงครั้งเดียว (เช่น ใช้ร่วมกับฟังก์ชันจัดการอาร์เรย์อย่าง array_map) เราสามารถสร้างฟังก์ชันไม่มีชื่อได้
<?php
// สร้างฟังก์ชันเก็บไว้ในตัวแปร $sayHi
$sayHi = function($word) {
return "Say: " . $word;
}; // *** ต้องปิดท้ายด้วยเซมิโคลอน (;)
echo $sayHi("Hello");
?>ช่วยลดรูปฟังก์ชันไม่มีชื่อให้สั้นกระชับ โดยใช้คีย์เวิร์ด fn() และส่งค่ากลับได้ทันทีโดยไม่ต้องเขียนคำว่า return
<?php
// ฟังก์ชันคูณสองแบบสั้น
$multiply = fn($num) => $num * 2;
echo $multiply(10); // ส่ง 10 ไปคูณ 2
?>