PHPコールバック関数
コールバック関数
コールバック関数(単に「コールバック」と呼ばれることが多い)は、引数として別の関数に渡される関数です。
既存の関数はすべて、コールバック関数として使用できます。関数をコールバック関数として使用するには、関数の名前を含む文字列を別の関数の引数として渡します。
例
PHPの関数にコールバックを渡してarray_map()
、配列内のすべての文字列の長さを計算します。
<?php
function my_callback($item) {
return strlen($item);
}
$strings = ["apple", "orange",
"banana", "coconut"];
$lengths =
array_map("my_callback", $strings);
print_r($lengths);
?>
バージョン7以降、PHPは無名関数をコールバック関数として渡すことができます。
例
array_map()
PHPの関数のコールバックとして無名関数を使用します。
<?php
$strings = ["apple", "orange", "banana", "coconut"];
$lengths =
array_map( function($item) { return strlen($item); } , $strings);
print_r($lengths);
?>
ユーザー定義関数のコールバック
ユーザー定義の関数とメソッドは、コールバック関数を引数として受け取ることもできます。ユーザー定義関数またはメソッド内でコールバック関数を使用するには、変数に括弧を追加してコールバック関数を呼び出し、通常の関数と同様に引数を渡します。
例
ユーザー定義関数からコールバックを実行します。
<?php
function exclaim($str) {
return $str . "! ";
}
function ask($str) {
return $str . "? ";
}
function
printFormatted($str, $format) {
// Calling the $format callback
function
echo $format($str);
}
// Pass "exclaim" and "ask" as callback
functions to printFormatted()
printFormatted("Hello world", "exclaim");
printFormatted("Hello world", "ask");
?>