ฟังก์ชันคอลแบ็กใน PHP
คอลแบ็ก คือฟังก์ชัน ที่ถูกส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชันอื่น
ลองดูตัวอย่าง สมมติว่าเรามีฟังก์ชันที่ รับพารามิเตอร์แรกเป็นตัวเลข และพารามิเตอร์ที่สองเป็นคอลแบ็ก:
<?php
function func($num, $calb)
{
}
?>
มาทำให้ภายในฟังก์ชัน คอลแบ็กของเราถูกเรียกใช้สำหรับตัวเลขที่ส่งมา
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
ตอนนี้เรามาดูว่ามี ตัวเลือกใดบ้างในการส่งคอลแบ็กไปยังฟังก์ชันของเรา
ตัวเลือกที่ 1
คอลแบ็กของเราสามารถเป็น ฟังก์ชันทั่วไป:
<?php
function calb($num) {
return $num ** 2;
}
?>
ในกรณีนี้ ในฐานะคอลแบ็ก เราจะส่งชื่อของฟังก์ชันของเรา:
<?php
func(3, 'calb');
?>
ภายในฟังก์ชัน func
คอลแบ็กของเราจะถูกเรียกโดยใช้ชื่อ
ตัวเลือกที่ 2
คอลแบ็กของเราสามารถเป็นฟังก์ชันที่ไม่ระบุชื่อ ที่เก็บไว้ในตัวแปร:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
ในกรณีนี้ เราส่งพารามิเตอร์เป็น ตัวแปรที่มีฟังก์ชันของเรา:
<?php
func(3, $calb);
?>
ตัวเลือกที่ 3
สามารถส่งฟังก์ชันที่ไม่ระบุชื่อ เป็นพารามิเตอร์ได้ทันที:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
ตัวเลือกที่ 4
สามารถย่อโค้ดได้โดยใช้ ฟังก์ชันลูกศร:
<?php
func(3, fn($num) => $num ** 2);
?>
โจทย์ปฏิบัติ
กำหนดฟังก์ชันที่รับพารามิเตอร์เป็น อาร์เรย์และคอลแบ็ก ซึ่งจะถูกนำไปใช้ กับแต่ละองค์ประกอบของอาร์เรย์:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
เรียกใช้ฟังก์ชันนี้ โดยส่งพารามิเตอร์ เป็นอาร์เรย์ที่มีตัวเลขและคอลแบ็ก ที่ยกกำลังสองของตัวเลขที่ส่งมา