Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

PHP Callbacks/Callables


ความหมายและการใช้งาน

การโทรกลับเป็นประเภทเทียมใน 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