'call_user_func' の使用
CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 5/68。
call_user_func() 関数は、PHPで関数を動的に呼び出すための強力な方法を提供します。関数をその名前で直接呼び出す代わりに、関数名を文字列変数に格納し、call_user_func() を使用して実行することができます。
基本的な構文は以下の通りです:
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // 出力: Hello World!
?>これは、ユーザーの入力や条件に基づいて異なる関数を呼び出す必要がある場合に特に便利です。また、追加のパラメータとして含めることで、関数に引数を渡すこともできます。
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // 出力: 8
?>この動的な関数呼び出しは、電卓、コマンドプロセッサ、ルーティングシステムなど、実行する特定の関数が実行時に決定される柔軟なアプリケーションを構築する際に、特に価値があります。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
チャレンジ
簡単3つの関数を作成してください:2つの数値を受け取りその積を返す multiply、2つの数値を受け取りその差を返す subtract、そして2つの数値を受け取りその商を返す divide です。
3つの入力を受け取ります:操作名("multiply"、"subtract"、または "divide")、および2つの数値です。これら3つの入力を読み込み、call_user_func() を使用して適切な関数を2つの数値とともに実行し、その結果を出力してください。
入力形式: 3行 - 1行目に操作名、2行目に1つ目の数値、3行目に2つ目の数値が含まれます。
期待される出力: 操作の結果
チートシート
call_user_func() 関数を使用すると、関数名を含む文字列変数を使用して、関数を動的に呼び出すことができます。
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // 出力: Hello World!
?>追加のパラメータとして含めることで、関数に引数を渡すことができます。
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // 出力: 8
?>自分で試してみよう
<?php
// 入力を読み込む
$operation = trim(fgets(STDIN));
$num1 = floatval(fgets(STDIN));
$num2 = floatval(fgets(STDIN));
// TODO: ここに3つの関数(multiply、subtract、divide)を作成する
// TODO: call_user_func() を使用して適切な関数を実行する
// 結果を出力する
echo $result;
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。