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

Callback/Callable ใน PHP

นิยามและการใช้งาน

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