PHP8.0から使えるunion型についてのメモ

PHP8.0から使えるunion型についてのメモ

6 回閲覧されました

みなさんこんにちは、jonioです。

今回はPHPのunion型についてのメモの記事になります。

union型とは?

下記のLaravelのコードで考えます。

public function showExample(): View|RedirectResponse
{
    if (auth()->guest()) {
        return redirect()->route('login');
    }

    return view('example');
}

「: View|RedirectResponse」の部分がunion型です。

複数の返り値の型を指定する為の記述です。

上記の例はViewの型またはRedirectResponseの型を返すのを設定しています。

Viewの型はページを表示する場合(7行目)でRedirectResponseの型はリダイレクトする場合(4行目)です。

指定できない型の組み合わせ

色々あると思いますが例えばboolとfalseはダメです。

理由はboolの中にtrueとfalseの両方を含んでいるからです。

なぜ使うか?

恐らく複数の開発者がコードを見た時に読みやすくなるのとテストの時に型の予測がしやすくなってテストがやりやすくなるからだと思います。