可変関数
CoddyのPHPジャーニー「論理とフロー」セクションの一部。レッスン 6/68。
variable functions は、PHP で functions を動的に呼び出すもう 1 つの方法です。call_user_func() を使用する代わりに、function name を含む variable を function そのもののように扱うことで、function を直接呼び出せます。
syntax は簡単です: function name を含む variable がある場合、variable に括弧を追加してその function を呼び出せます:
<?php
function sayHello() {
echo "Hello World!";
}
$functionName = "sayHello";
$functionName(); // 出力: Hello World!
?>これはパラメータを受け取る functions にも使えます。単に括弧内に引数を渡します:
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
$func = "greet";
$func("Alice"); // 出力: Hello, Alice!
?>variable functionsは、コードを動的に実行するための、明快で直感的な方法を提供します。この機能は、条件やユーザー入力に基づいて異なるfunctionsをCallする必要がある場合に特に便利で、コードをより柔軟かつ適応性の高いものにします。
チャレンジ
簡単3つのfunctionsを作成します。2つの数値(lengthとwidth)を受け取り、それらの積を返すcalculateArea、2つの数値を受け取り、それらの合計の2倍を返すcalculatePerimeter、そして2つの数値を受け取り、それらの平方の合計の平方根を返すcalculateDiagonalです。
threeつの入力を受け取ります。operation名("area"、"perimeter"、または"diagonal")、length、widthです。threeつの入力をすべて読み取り、function名をvariableに格納し、2つの測定値を使ってvariable function syntaxでそのfunctionを呼び出し、resultを出力してください。
入力形式: 3行です。1行目にはoperation名、2行目にはlength(小数を含む場合がある数値)、3行目にはwidth(小数を含む場合がある数値)が含まれます。
期待される出力: 計算のresult
自分で試してみよう
<?php
// 入力を読み取る
$operation = trim(fgets(STDIN));
$length = floatval(fgets(STDIN));
$width = floatval(fgets(STDIN));
// TODO: ここに3つの関数を作成する (calculateArea, calculatePerimeter, calculateDiagonal)
// TODO: 可変関数構文を使って適切な関数を呼び出し、結果を格納する
// 結果を出力する
echo $result;
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
自分で練習してみよう: PHPオンラインコンパイラ