めのん@ひとりプログラミング同好会

このブログはすべてフィクションであり、実在の人物、団体とは一切関係ありません

PHP 8のunion types

こんにちは、めのんです!

6月25日付けでPHPのバージョン8.0.0 Alpha1が公開されたようです。 まだまだ従来のPHPでさえ勉強中でよくわかってないのですが、次のバージョンではどんな風になるのか興味があります。

というわけで、「PHP 8.0 UPDATE NOTES」を調べてみました!

最初に目に付いたのはunion typesです。 union typesというので、すっかりCの共用体のようなものかと思っていたら全然違いました。

どうやら、int|string のように、複数の型を | で区切って並べるようです。 まだしっかりドキュメントを読めていませんが、おそらくunion typesとして並べた型の値だけを代入できるということではないでしょうか?

PHPって、もともとは静的な型が無いプログラミング言語だったと思うんです。 それが、品質の向上のためなのか、それとも流行を追いかけただけなのかはわかりませんが、現在は静的な型がある程度使えるようになっています。 でもやっぱり、たった1つの型に制限してしまうのは便利が悪いのでunion typesが登場したということなんでしょうか? 私にはよくわかりませんが、そんな気がしています。

このunion typesは、クラスのプロパティ(メンバー)だけじゃなくて、関数の仮引数にも戻り値の型にも使えるようですね。 でも、戻り値の型が複数必要って、成功したときの値とエラーコードぐらいじゃないでしょうか?

値とエラーに限定するなら、ZigやZenのエラー共用体のようなやり方のほうがスッキリするように思います。 単に失敗したことがわかればいいならnullableでもいいですしね。 もっと複雑な情報が必要なら例外だと思います。

まだ、これから運用されていく機能だと思うので、やってみないとわからないことも多いんじゃないかな? とは思っています。 時間が取れれば、私もLinux上でPHP 8.0.0 Alpha1をビルドしてみたいと思っています。 実際に動かせるようになれば、もっといろんなことが見えてくるでしょうね!

それでは!!