PHPにおけるコールバック関数
コールバックとは、他の関数に パラメータとして渡される関数のことを指します。
例を見てみましょう。 ここに、最初のパラメータとして数値を受け取り、 2番目のパラメータとしてコールバックを受け取る関数があるとします:
<?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;
}
?>
数値の配列と、渡された数値を二乗するコールバックを パラメータとして渡して、この関数を呼び出してください。