PHP 8.0
PHP 8.0 では、新機能、構文の追加、バグ修正が行われています。 このバージョンの新機能の詳細については、 リリースのお知らせ(英語)を参照してください。 コードの移行の詳細については、 PHP 7.4.x から PHP 8.0.x への移行(英語)ガイドを参照してください。
名前付き引数
名前付き引数(英語)では、位置ではなくパラメーター名に基づいて関数に引数を渡すことができます。 このようにして、関数呼び出しは自己文書化され、引数の順序は任意になります。
関数呼び出しでは、提供されているクイックフィックス Alt+Enter を使用して、パラメーター名を 1 つずつ、またはすべての引数に一度に追加できます。 リスト内に渡された値がデフォルト値と一致する引数がある場合、PhpStorm はそれらを未使用としてハイライトし、削除のためのクイックフィックスを提供します。

属性
属性(英語)を使用すると、クラス、プロパティ、関数などの宣言に構造化された構文メタデータを提供できます。 PHPDoc コメント とは異なり、属性は言語レベルでサポートおよび検証されます。
属性を作成するには、クラス宣言の上に #[Attribute] マーカーを追加します。 属性内で、オプションで ターゲットフラグと 再現性フラグを提供します。 コード補完を使用するには、 Ctrl+Space を押します。

いくつかの コードインスペクションは、属性が正しく使用されていることを確認できます。
クラスを属性として使用することはできませんインスペクションは、クラスの引数宣言に
#[Attribute]アノテーションが付けられていることを確認します。
適用不可の属性ターゲット宣言インスペクションは、属性がその引数宣言で
#[Attribute::Target]で注釈されていることを検証し、そのためクラスやメソッドなどの正しいターゲットに適用されます。
繰り返し不可能な属性インスペクションは、引数宣言で
Attribute::IS_REPEATABLEフラグが設定されていない状態で繰り返される属性をハイライトします。
共用体タイプ
共用体タイプ(英語)は、単一の値ではなく、複数の異なるタイプの値を受け入れます。 共用体タイプは Type1|Type2|... として指定されており、通常のタイプが受け入れられるすべての場所で使用できます。 既存のすべての PhpStorm コーディング支援機能は共用体型を完全にサポートします。
共用体型が PHPDoc により提供されている場合、PhpStorm はそれをネイティブの共用体型へ変換するためのクイックフィックス Alt+Enter を提供します。

ネイティブに宣言された共用体型を使うことで、PhpStorm は呼び出しを分析し、問題のある領域を検出できます。 チェックは、プロパティ、引数、戻り値のすべてのレベルで機能します。

コンストラクタープロパティプロモーション
コンストラクタープロパティプロモーション(英語)を使用すると、コンストラクターでクラスプロパティを直接宣言して初期化できます。 パブリック、 保護を選択します。、 private などの可視性修飾子をコンストラクター引数に指定すると、引数はオブジェクトプロパティとして解釈され、その値がこのプロパティに割り当てられます。 これにより、オブジェクトが小さくなり、読みやすくなり、コンストラクターを使用して変数を初期化する場合の定型コードの量を減らすことができます。
クイックフィックス Alt+Enter を使用して、コンストラクター引数をプロモートされたプロパティに変換できます。

PhpStorm はプロモートされたプロパティが PHP 8 の制約に従って使用されているか検証します。 例えば、プロモートされたプロパティはコンストラクターの外や抽象コンストラクター内で宣言できず、可変長パラメーターもプロモーションできません。

一致式
一致式(英語)は 切り替え に似ていますが、より安全なセマンティクスを提供し、値を返すことができます。 PhpStorm は 切り替え ステートメントを match 式に変換可能と検出し、これを行う専用のクイックフィックス Alt+Enter を提供します。

いくつかの コードインスペクションは、 match 式が正しく使用されていることを確認できます。
式の引数の型が指定された条件のいずれにも一致しない場合、式によって
Fatal Errorが発生します。 このような場合、付属のクイックフィックスを使用してデフォルトアームを追加できます。
未使用の「一致」条件(英語)インスペクションは、決して一致しない条件をハイライトし、削除することを提案します。

未使用状態(英語)インスペクションは、実行されない重複条件を検出します。 それらの間を移動して、アーム全体または値のリストから重複する値のみを削除できます。

'match'式の重複アームインスペクションは、異なるアームで内容が同一のボディを検出し、まとめてブロックのサイズを削減できることを示します。

「一致」式は三項演算子に置き換えることができます(英語)インスペクションは、シングルアームと
デフォルトアームの式を検出し、3 値式に置き換えることができます。
一致式にデフォルトのアームしかない場合は、おそらく冗長です。 冗長な「一致」式(英語)インスペクションは、そのような式をハイライトし、削除できるようにします。

Nullsafe 演算子
nullsafe 演算子 (英語)?-戻り値のラップダイアログ を使用すると、ネストされた null チェック条件を連鎖呼び出しに置き換えることができます。

PhpStorm は nullsafe 演算子が書き込みコンテキストや参照として誤って使用されていないことを検証します。

キャプチャーしない漁獲量
PHP 8 以降では、例外を 変数にキャプチャーせず(英語)にキャッチできます。 未使用のローカル変数(英語)インスペクションは、 catch ステートメント内で使用されていない変数を検出し、削除するためのクイックフィックス Alt+Enter を提供します。

式を投げる
PHP 8 では、式が許可されるすべての場所で 例外をスローできます。例えばアロー関数、合体演算子 ?? 、三項演算子 ?: などです。 PhpStorm は、 ライブテンプレートを提供し、 スローの使用箇所を見つけます。 式をすばやく追加できます。 適用には、 thr と入力し Tab を押します。

オブジェクトで: : class を使用する
以前の PHP バージョンでは、クラス FQN を取得するには、 ClassName::class を使用できました。 ただし、オブジェクトでは、 get_class() を呼び出す必要がありました。 PHP 8 では、 get_class() 呼び出しを $object::class に安全に置き換えることができます。 PhpStorm はこのためのクイックフィックス Alt+Enter を提供し、 ::class が不適切に使用された場合も警告します。

文字列の新機能
PHP 8 では、文字列操作のための新しい関数がいくつか導入されました。 str_contains関数は、ある文字列がほかの文字列に含まれているか調べます。 str_starts_with および str_ends_with関数は、文字列が特定の部分文字列で始まるか、または終わるかを判定するために使用されます。 'str*'呼び出しは PHP 8 の 'str_*'呼び出しへ置き換え可能インスペクションは、よりモダンで分かりやすい代替に置き換えられる strpos や substr 呼び出しをハイライトし、対応するクイックフィックス Alt+Enter を提供します。
