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は無名関数をコールバック関数として渡すことができます。
例
PHPのarray_map()
関数のコールバックとして無名関数を使用します:
<?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");
?>
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。