コールバック関数
CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 4/68。
コールバック関数とは、別の関数に引数として渡される関数のことです。関数を即座に実行するのではなく、その名前を渡すことで、受け取り側の関数が必要な時に後で呼び出せるようにします。
関数をコールバックとして渡すには、単に関数名を文字列として使用します。
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
function processUser($username, $callback) {
// 何らかの処理を行う...
$callback($username); // コールバック関数を呼び出す
}
processUser("Alice", "greet"); // 出力: Hello, Alice!
?>この例では、"greet" はコールバックとして processUser() に渡されます。processUser() 関数は、その文字列を関数名として使用してコールバックを呼び出します。
コールバックは、関数をより柔軟にできるため、非常に便利です。渡すコールバックに応じて、同じ関数で異なるアクションを実行できます。この概念は、このコースの後半で学習する array_map() や array_filter() といった、PHPの多くの組み込み関数の基本となっています。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
チャレンジ
簡単2つの関数を作成してください。1つは文字列を受け取り、それを大文字にして返す formatUppercase という名前の関数、もう1つは文字列を受け取り、それを小文字にして返す formatLowercase という名前の関数です。
次に、テキスト文字列とコールバック関数名の2つのパラメータを受け取る applyFormat という名前の関数を作成してください。この関数は、テキストにコールバックを適用し、その結果を返す必要があります。
2つの入力を受け取ります。操作タイプ("upper" または "lower")と、フォーマットするテキストです。両方の入力を読み取り、操作タイプに基づいて使用するコールバックを決定し、適切なコールバックを使用して applyFormat を呼び出し、フォーマットされた結果を出力してください。
入力形式: 2行 - 1行目には操作タイプ("upper" または "lower")、2行目にはフォーマットするテキストが含まれます
期待される出力: 操作タイプに基づいたフォーマット済みのテキスト
チートシート
コールバック関数とは、別の関数に引数として渡される関数のことです。関数をすぐに呼び出すのではなく、その名前を渡すことで、受け取り側の関数が必要なときに後で呼び出せるようにします。
関数をコールバックとして渡すには、関数の名前を文字列として使用します。
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
function processUser($username, $callback) {
// 何らかの処理を行う...
$callback($username); // コールバック関数を呼び出す
}
processUser("Alice", "greet"); // 出力: Hello, Alice!
?>コールバックを使用すると、渡すコールバックに応じて異なるアクションを実行できるため、関数の柔軟性が高まります。
自分で試してみよう
<?php
// 入力を読み込む
$operation = trim(fgets(STDIN));
$text = trim(fgets(STDIN));
// TODO: 以下にコードを記述してください
// formatUppercase 関数を作成
// formatLowercase 関数を作成
// applyFormat 関数を作成
// 操作タイプに基づいて使用するコールバックを決定
// 適切なコールバックを使用して applyFormat を呼び出す
// 結果を出力
echo $result;
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。