บทนำ
ถ้าชื่อตัวแปรมีวงเล็บ (พร้อมพารามิเตอร์หรือไม่มี) นำหน้า PHP parser จะพยายามหาฟังก์ชันที่ชื่อตรงกับค่าของตัวแปรและดำเนินการ ฟังก์ชันแบบนี้เรียกว่า variable function คุณสมบัตินี้มีประโยชน์ในการนำ callback, function tables ฯลฯ ไปใช้งาน
Variable functions ไม่สามารถสร้างได้กับ language constructs เช่น include, require, echo ฯลฯ แต่สามารถหาทางแก้ได้ด้วย function wrappers
ตัวอย่าง Variable function
ในตัวอย่างต่อไปนี้ ค่าของตัวแปรตรงกับชื่อฟังก์ชัน ฟังก์ชันจึงถูกเรียกโดยการวางวงเล็บนำหน้าตัวแปร:
ตัวอย่าง
<?php function hello(){ echo "Hello World"; } $var="Hello"; $var(); ?>
ผลลัพธ์
Hello World
นี่คือตัวอย่างอีกอย่างของ variable function พร้อมอาร์กิวเมนต์:
ตัวอย่าง
<?php function add($x, $y){ echo $x+$y; } $var="add"; $var(10,20); ?>
ผลลัพธ์
30
ในตัวอย่างต่อไปนี้ ชื่อฟังก์ชันที่จะเรียกถูกป้อนโดยผู้ใช้:
ตัวอย่าง
<?php function add($x, $y){ echo $x+$y; } function sub($x, $y){ echo $x-$y; } $var=readline("enter name of function: "); $var(10,20); ?>
ผลลัพธ์
enter name of function: add 30
ตัวอย่าง Variable method
แนวคิด variable function สามารถขยายไปสู่เมธอดในคลาสได้:
ตัวอย่าง
<?php class myclass{ function welcome($name){ echo "Welcome $name"; } } $obj=new myclass(); $f="welcome"; $obj->$f("Amar"); ?>
ผลลัพธ์
Welcome Amar
เมธอดสแตติกก็สามารถเรียกด้วยเทคนิค variable method ได้:
ตัวอย่าง
<?php class myclass{ static function welcome($name){ echo "Welcome $name"; } } $f="welcome"; myclass::$f("Amar"); ?>
ผลลัพธ์
Welcome Amar