PHP 8.0 のリリースでは、新しい型である Union 型 (「ユニオン型」とも呼ばれます) が導入されました。これは、変数が複数の型の 1 つであることを宣言するために使用できます。
多くのオブジェクト指向言語では、ポリモーフィズムの概念を使用して、変数が独自の型、そのサブタイプ、または実装されたインターフェイスのインスタンスになり得ることを定義できます。しかし、PHP では、switch、if、elseif 条件ブロックなど、数種類の条件文を組み合わせることでのみこの目標を達成できました。このアプローチは場合によっては面倒で、維持するのが困難です。
したがって、PHP8.0 では、条件文を取り除くポリモーフィズムを実現するために、新しい共用体型を追加しました。この記事では、共用体型の定義、使用法、構文、およびいくつかの考慮事項を紹介します。
共用型変数を定義する場合は、複数の型の名前を縦棒 (|) で区切る必要があります。次に例を示します。
function foo(int|float|string $param) {}これはパラメータ $param を定義します。これは、整数、浮動小数点、または文字列タイプのいずれかになります。 通常、null キーワードを使用して、共用体型の変数を null 値にできることを指定することもできます。
function bar(string|null $param) {}これは、$param が 2 つの異なる型 (string または null) を持つことができることを意味します。 。 ただし、共用体型は再帰的定義をサポートしません。つまり、次の構文は使用できません。
function baz(int|float|array $param, string|null|float $other) {}
// 函数参数中使用union类型: function test(int|float $param) {} // 方法返回类型中使用union类型: class Foo { public function bar(): string|array {} } // 属性类型中使用union类型: class Baz { public int|float $foo; }ただし、変数宣言で共用体型を使用すると、いずれかの型の値にのみ割り当てられるため、より制限が厳しくなります。
// 变量声明中使用union类型: $test = 1|2.0|"three"; $test = "four"; // 可以赋值为其中一个类型的值 $test = false; // 不是其中任何一个类型,将会抛出TypeErroris_int()、is_float()、is_string() およびその他の関数を使用して共用体型変数をチェックできます。
以上がPHP8.0のユニオン型の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。