第6章 ユーザー定義関数 / 第4回 模擬試験
PHPの関数の型宣言(type hint)に関する次の記述のうち、正しいものはどれか。
戻り値の型は`function foo(): int { ... }`のように、引数リストの後にコロンを付けて宣言する。
正解
型宣言をすると、実引数の型チェックが完全に無効化される。
型宣言には`union型`(複数の型の組み合わせ)を指定することはできない。
PHPでは引数や戻り値に型宣言を一切行うことができない。
解説
戻り値の型宣言は、`function foo(引数リスト): 型 { ... }`のように、引数リストを閉じる`)`の後にコロン`:`を付けて記述します。
例:
```
function add(int $a, int $b): int {
return $a + $b;
}
```
他の選択肢が誤りである理由は次の通りです。
・型宣言をすると、渡された実引数の型が宣言と一致するかがチェックされます。「型チェックが完全に無効化される」はむしろ逆で、型宣言は型の安全性を高める機能です。
・PHP 8.0以降、`int|string`のように複数の型を`|`でつないだ「union型(合併型)」を型宣言に指定できます。
・PHPは引数・戻り値の両方に型宣言を行うことができます(型宣言自体は任意で省略も可能ですが、「一切行えない」は誤りです)。
例:
```
function parseId(int|string $id): int|string {
return $id;
}
```
(参照: 独習PHP 第4版 第6章 ユーザー定義関数 6.1.5〜6.1.6節 引数/戻り値の型宣言 p.264〜267)
関連する問題
- 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の変数のスコープに関する次の記述のうち、正しいものはどれか。