PHP 8 にユニオン型を導入するかどうかの投票が最近終了し、その結果、PHP 開発チームの 61 人のメンバーが賛成票を投じ、5 人が反対票を投じました。
バード兄弟が投票に反対票を投じたことにも気づきました~
したがって、投票結果によれば、当局はは、Union Types 2.0 が PHP 8 に導入されることを確認しました。
ユニオン タイプに関する詳細な議論は、GitHub でご覧いただけます。ユニオン タイプについて簡単に見てみましょう。
公式の紹介によると、Union Types (Union Types) は、単一の型だけでなく、異なる型の複数の値の受け取りをサポートします。 PHP は現在 2 つの特殊な共用体タイプをサポートしています:
# ·特殊な Type 構文を使用した Type または null # # ·
配列または Traversable を使用して、特別な反復可能型を作成します。ただし、PHP は現在、任意の共用体型をサポートしていません。これを使用したい場合は、phpdoc コメントの助けが必要です。例は次のとおりです: <pre style="margin: 0px; padding: 0px; font-family: "Courier New" !important; font-size: 14px; line-height:
1.5em; white-space: pre-wrap; overflow-wrap: break-word;">class Number { /**
* @var int|float number; /**
* @param int|float number) { number;
} /**
* @return int|float */
public function getNumber () { return $this->number;
}
}
の結果によると、共用体型の使用は、以下の場合に非常に一般的です。オープンソースのエコシステムと PHP 独自の標準ライブラリ。公式関係者は、PHP が共用体型をサポートできれば、より多くの型情報を phpdoc から関数シグネチャに移行できるようになり、次のような共通の利点があると述べています。 # 型は実際に強制されるため、エラーを早期に検出できます。
これらは必須であるため、型情報が古くなったり、エッジケースが見逃されたりする可能性が低くなります。 ·
リスコフ置換原則を実装するために、継承プロセス中に型がチェックされます。 ·
型情報はリフレクションを通じて取得できます。 ·
構文は phpdoc よりも単純です。 ジェネリックスに次いで、共用体型は、現在の型宣言システムにおける最大の「ギャップ」であると言えます。 ****提案****
ユニオン型は T1T2... 構文を使用し、受け入れられるすべての型で使用できます: <pre style="margin: 0px; padding: 0px; font-family: "Courier New" !important; font-size: 14px; line-height:
1.5em; white-space: pre-wrap; overflow-wrap: break-word;">class Number { private int|float number): void { number;
} public function getNumber (): int|float { return $this->number;
}
}
サポートされる型
共用体型は、PHP で現在サポートされているすべての型 (null 型、null 許容共用型、偽の擬似型、反復型および冗長型) をサポートします。
****型構文****
特殊な void 型を除き、PHP の型構文は次の構文で記述できるようになりました:
<pre style="margin: 0px; padding: 0px; font-family: "Courier New" !important; font-size: 14px; line-height: 1.5em; white-space: pre-wrap; overflow-wrap: break-word;">type: simple_type | "?" simple_type | union_type ; union_type: simple_type "|" simple_type | union_type "|" simple_type ; simple_type: "false" # only legal in unions | "null" # only legal in unions | "bool" | "int" | "float" | "string" | "array" | "object" | "iterable" | "callable" # not legal in property types | "self" | "parent" | namespaced_name ;1 0
PHP 中国語ウェブサイト には、多数の無料の PHP 入門チュートリアル があり、オンラインで学習することを歓迎します。