第6章 ユーザー定義関数 / 第5回 模擬試験
PHPの関数の可変関数(変数関数呼び出し)に関する次の記述のうち、正しいものはどれか。
変数に関数名の文字列を格納し、`$var()`のように呼び出すことができる。
正解
可変関数は、クラスメソッドの呼び出しには一切使用できない。
可変関数はPHP8で廃止された。
可変関数は定数に対してのみ使用できる機能である。
解説
可変関数(変数関数呼び出し)は、変数に関数名を表す「文字列」を格納しておき、`$var()`のようにその変数に`()`を付けて呼び出すことで、対応する関数を実行できる仕組みです。
例:
```
$funcName = 'strlen';
echo $funcName('hello'); // 5(strlen('hello')が呼ばれる)
```
他の選択肢が誤りである理由は次の通りです。
・可変関数の仕組みはクラスメソッドの呼び出しにも応用できます。`$method = 'save'; $obj->$method();`のように、変数に格納したメソッド名でインスタンスメソッドを呼び出すことも可能です。「一切使用できない」は誤りです。
・可変関数はPHP8でも引き続き使用できる機能です。
・可変関数は「変数に格納した文字列」を関数名として使う仕組みであり、定数専用の機能ではありません。
(参照: 独習PHP 第4版 第6章 ユーザー定義関数 6.4.3節 可変関数 p.291〜293)
関連する問題
- PHPの関数引数に関する次の記述のうち、誤っているものはどれか。
- 関数に関する次の記述のうち誤っているものはどれか。
- PHPの匿名関数とアロー関数に関する次の記述のうち、正しいものはどれか。
- 次のコードの実行結果として正しいものはどれか。 ```php $val = 'a'; $val = 'b'; print ('【A】' . $val); function func($val = 'c') { $val = 'd'; print ('【B】' . $val); global $val; print ('【C】' . $val); $val = 'e'; print ('【D】' . $val); $val = 'f'; } $val = 'g'; func($val); print ('【E】' . $val); ```
- PHPの変数のスコープに関する次の記述のうち、正しいものはどれか。