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;
}
?>
숫자 배열과 전달된 숫자를 제곱하는 콜백을 매개변수로 전달하여 이 함수를 호출하세요.