はじめに
PHP7.1から導入されたnullable型(?型)は、パラメータだけでなく返り値にも指定可能です。
しかし「返り値には指定できない」と書かれた教材や問題集があり、試験でも混乱しやすいポイントです。本記事では誤解されやすい部分を整理し、コード例で正しい使い方を確認します。
目次
誤解されやすい記述
- 「nullableを指定できるのはパラメータだけで、返り値には指定できない」
- 「PHP7.1で返り値に ?型 を書くと Parse error になる」
✅ この記述は 誤り です。
正しい使い方
パラメータにnullableを指定
function foo(?string $name): void {
var_dump($name);
}
foo("Taro"); // string(4) "Taro"
foo(null); // NULL
返り値にnullableを指定
function bar(): ?string {
return rand(0,1) ? "Hello" : null;
}
var_dump(bar()); // string(5) "Hello" または NULL
試験対策ポイント
?型
は「型 or null」を意味する- PHP7.1以降は パラメータにも返り値にも使用可能
- PHP7.0以前は構文がないので 返り値に
?型
はエラーになる - 「返り値には指定できない」と書かれている選択肢は 間違いとして正解
まとめ
- パラメータ側:
?string $arg
→ 引数に string または null を渡せる - 返り値側:
(): ?string
→ 戻り値として string または null を返せる - 試験で迷ったら「返り値にもnullableは使える」という知識を思い出す