Variable function มีลักษณะคล้าย ๆ กับ variable variable แต่จะแตกต่างกันตรงที่มันจะเรียกใช้ฟังก์ชันตามค่าที่ตัวแปรนั้น ๆ ผมจะยกตัวอย่างในกรณีหนึ่งที่เราจะต้องทำการตรวจสอบค่าของตัวแปร เพื่อเรียกใช้ฟังก์ชันแตกต่างกันครับ
<?php
$which = 'first';
switch ($which) {
case 'first':
first();
break;
case 'second':
second();
break;
case 'third':
third();
break;
}
?>
จากตัวอย่างด้านบนนั้นเป็นการตรวจสอบว่าถ้าค่าของ $which มีค่าเป็น 'first' ก็ให้เรียกใช้ฟังก์ชัน first() ถ้ามีค่าเป็น 'second' ก็ให้เรียกใช้ second() และถ้ามีค่าเป็น 'third' ก็ให้เรียกใช้ third()
ถ้าเราใช้วิธี variable function เราจะไม่ต้องตรวจสอบค่าของมันเลย ดังนี้
<?php $which = 'first'; $which(); ?>
จากตัวอย่างด้านบนนี้เป็นการนำค่าที่ได้จากตัวแปร $which ไปเรียกใช้ฟังก์ชัน ซึ่งในตัวอย่างค่าของ $which มีค่าเป็น 'first' ดังนั้นมันจะทำการเรียกใช้ first() จะเห็นความแตกต่างระหว่างตัวอย่างที่ผมแสดงให้ผู้อ่านดู มากเลยทีเดียวครับ
แต่ในการเรียกใช้ฟังก์ชันวิธีนี้นั้น บางทีอาจจะไม่มีฟังก์ชันตามค่าของตัวแปรนั้น ๆ ซึ่งถ้าไม่มี [stong]PHP จะทำการแจ้งเตือน ดังนั้นเราควรจะตรวจสอบมันด้วยฟังก์ชัน function_exists() ว่ามีฟังก์ชันนั้น ๆ อยู่หรือไม่
<?php
function first() {
// some code
}
function second() {
// some code
}
function third() {
// some code
}
$which = "fourth";
if (function_exists($which)) {
$which();
}
?>
จากตัวอย่างด้านบนมันจะไม่ทำการเรียกใช้ฟังก์ชันใด ๆ เลยเนื่องจากไม่มีฟังก์ชันตามค่าของ $which
ผู้สนับสนุน