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