ความหมายและการใช้งาน
การโทรกลับเป็นประเภทเทียมใน 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