第6章 ユーザー定義関数 / 第5回 模擬試験

PHPの複合的な型宣言に関する次の記述のうち、正しいものはどれか。

`?int`という型宣言は、`int`型または`null`を許容することを意味する。 正解
`int|string`という型宣言は、PHPでは構文エラーになる。
型宣言は変数のプロパティに対してのみ使用でき、関数の引数には使用できない。
`?type`という記法は、PHP8では廃止された。
解説
`?int`のように型名の前に`?`を付けると、「その型(`int`)」または「`null`」のどちらかを許容する、null許容型(Nullable型)の宣言になります。`?int`は`int|null`と同じ意味です。 他の選択肢が誤りである理由は次の通りです。 ・PHP 8.0以降、`int|string`のように`|`で複数の型をつないだ「union型」を型宣言に使用できます。構文エラーにはなりません。 ・型宣言はクラスのプロパティだけでなく、関数・メソッドの引数や戻り値にも使用できます。 ・`?type`という記法は、PHP8でも引き続き使用できるnull許容型の書き方です。「廃止された」は誤りです。 例: ``` function findUser(?int $id): ?string { if ($id === null) { return null; } return "User#{$id}"; } ``` (参照: 独習PHP 第4版 第6章 ユーザー定義関数 6.1.6節 複合的な型宣言 p.266〜267)