นิยามและการใช้งาน
Callback เป็น pseudo-type ใน PHP ตั้งแต่ PHP 5.4 มีการนำ type hint Callable เข้ามา ซึ่งคล้ายกับ Callback เมื่ออ็อบเจ็กต์ถูกระบุว่าเป็น callable หมายความว่ามันสามารถใช้เป็นฟังก์ชันที่เรียกใช้งานได้ Callable อาจเป็นฟังก์ชันในตัว (built-in), ฟังก์ชันที่ผู้ใช้กำหนดเอง หรือเมธอดภายในคลาสใดๆ
ฟังก์ชัน is_callable() ใช้ตรวจสอบว่าตัวระบุเป็น callable หรือไม่ PHP มี call_user_function() ที่รับชื่อฟังก์ชันเป็นพารามิเตอร์
ตัวอย่างต่อไปนี้แสดงว่าฟังก์ชันในตัวเป็น callable:
ตัวอย่าง
<?php var_dump (is_callable("abs")); ?>
ผลลัพธ์
bool(true)
ในตัวอย่างต่อไปนี้ ทดสอบฟังก์ชันที่ผู้ใช้กำหนดเองว่าเป็น callable หรือไม่:
ตัวอย่าง
<?php function myfunction(){ echo "Hello World"; } echo is_callable("myfunction") . "\n"; call_user_func("myfunction") ?>
ผลลัพธ์
1 Hello World
เพื่อส่งเมธอดของอ็อบเจ็กต์เป็น callable ต้องส่งอ็อบเจ็กต์ตัวมันและเมธอดของมันเป็นสององค์ประกอบในอาร์เรย์:
ตัวอย่าง
<?php class myclass{ function mymethod(){ echo "This is a callable" . "\n"; } } $obj=new myclass(); call_user_func(array($obj, "mymethod")); //อาร์เรย์ส่งในรูปแบบ literal call_user_func([$obj, "mymethod"]); ?>
ผลลัพธ์
This is a callable This is a callable
เมธอดสแตติกในคลาสก็สามารถส่งเป็น callable ได้ แทนที่จะส่งอ็อบเจ็กต์ ให้ใช้ชื่อคลาสเป็นองค์ประกอบแรกในพารามิเตอร์อาร์เรย์:
ตัวอย่าง
<?php class myclass{ static function mymethod(){ echo "This is a callable" . "\n"; } } $obj=new myclass(); call_user_func(array("myclass", "mymethod")); //ใช้ scope resolution operator call_user_func("myclass::mymethod"); ?>
ผลลัพธ์
This is a callable This is a callable