PhpStorm 2020.3は、PHP 8、PHPStan、Psalm、Tailwind CSS、Xdebug 3、および Code With Me を使用した共同開発のサポートを取り入れたメジャーアップデートです。
PHP 8.0 は、多くの素晴らしい新機能を含む大規模な言語のアップデートです。 PhpStorm は既存コードと PHP 8 の互換性を検証し、コードベースをより速やかに更新し、最新の言語の改善点を活用できるようにします。
プロジェクトで使用されている言語のバージョンを常に表示できるようになりました。 また、ステータスバーに対応するインジケーターを配置しました。 composer.json
に PHP バージョンの制限が記述されていない場合は、そこから言語のバージョンを変更することもできます。
PHP 8 の関数とメソッドの引数にパラメーター名を指定して渡すことができます。 これによって省略可能なパラメーターを設定する必要がなくなり、呼び出しが一目で分かりやすくなりました。
PhpStorm は以下を支援します。
この機能は、コンストラクター経由で変数を初期化する際に定型コードの量を減らすのに役立ちます。
PhpStorm では、Convert to promoted property(簡易初期化プロパティに変換)Alt+Enter クイックフィックスを使用してコンストラクターが初期化するプロパティを簡易初期化プロパティに変換したり、元に戻したりできます。
null チェックを含む複雑な条件の代わりに新しい ?->
演算子を使用すると、各要素に対する明示的な null チェックを含む呼び出しチェーンを構築することができます。
PhpStorm は演算子が適切に使用されているかどうかを確認します。
新しい match
式は switch
ステートメントに変わるもので、型安全で簡潔に記述できます。 match
式は値として使用して変数に代入したり、返したりできます。
PhpStorm は switch
ブロックを match
式に変換可能かどうかを判断し、Alt+Enter クイックフィックスでそれを自動実行します。
新しい式の場合、誤用を判断するのが困難な場合もあります。 PhpStorm はこのような式をハイライトします。
PHP 8 では、str_contains()
関数を使用してある文字列が別の文字列の一部であるかどうかを判断できます。 PhpStorm 2020.3 は、str_contains()
に置換可能な strpos()
の使用箇所に注意を促します。
また、PhpStorm は新しく、より分かりやすい str_starts_with()
関数と str_ends_with()
関数に置換可能な古い substr()
の呼び出し箇所をハイライトします。
use
セクションの最終パラメーターの後に続くコンマ。 ??
、三項/エルビス演算子 ?:
で使用できます)。 $object::class
を get_class($object)
の代わりに実行できます。 Alt+Enter クイックフィックスをこの目的で使用できます。 PHP 8 では PHPDoc アノテーションを使用する代わりに属性を使用し、メタデータを構造化された方法で指定できます。
PhpStorm は属性に対応したハイライト、コード補完、使用箇所の検索、リファクタリング、および他のコーディング支援機能を提供しています。 また、属性が宣言され、有効に使用されていることを確認するためのインスペクションも搭載しています。
PhpStorm 2020.3 ではいくつかの PHP 8 の属性を IDE 内ですぐに使用できます。 属性は composer パッケージ(jetbrains/phpstorm-attributes)でも提供していますので、自由に composer.json
に依存関係として追加してください。
@deprecated
PHPDoc タグと同様に、ソフトウェアの将来のバージョンで削除される予定のメソッド、関数、クラス、クラス定数をこのアトリビュートを使用してマークすることができます。
reason
と replacement
を指定すると、アップグレードが必要な理由をユーザーが理解し、Alt+Enter クイックフィックスでアップグレードを自動実行できるようになります。
このアトリビュートはオブジェクト形式の配列のキーと値を定義するために使用します。 また、PhpStorm のコーディング支援と解析を強化します。
注意:1 行で書いた場合は、PHP 7.4 以前でも機能します。
初期化したオブジェクトの変更を阻止したい場合、オブジェクトやプロパティを #[Immutable]
アトリビュートでマークしてください。
これにより、プログラムの状態がより予測可能になり、デバッグしやすくなります。
CONSTRUCTOR_WRITE_SCOPE
/ PRIVATE_WRITE_SCOPE
/ PROTECTED_WRITE_SCOPE
のいずれかの定数をアトリビュートコンストラクターに渡すと、プロパティの書き込みスコープ制限を調整できます。
注意:1 行で書いた場合は、PHP 7.4 以前でも機能します。
副作用が生じない関数を #[Pure]
としてマークすると、PhpStorm でのコードフロー解析を改善できます。 IDE はピュアな関数の冗長な呼び出しをハイライトします。
関数を #[Pure]
としてマークしているものの、本文内で外部から変更の試みがある場合、PhpStorm が危険なコードをハイライトします。
array_merge()
などのこのような PHP 内部関数はすべて最初から PhpStorm でマークされています。
このアトリビュートを使用すると、関数がパラメーターとして受け付ける値と返すことのできる値を指定できます。 これはコード補完を強化し、潜在的なバグを検出するのに役立ちます。
#[ExpectedValues]
は .phpstorm.meta.php
に含まれる expectedArguments()
の上位バージョンです。
スクリプトの実行を中断できる関数を #[NoReturn]
アトリビュートでマークすると、フロー解析のコントロール精度が向上します。
PhpStorm はより明確な解析を行えるよう、クイックフィックスを使用してアトリビュートを階層全体に適用することを提案します。
このアトリビュートを正規表現、SQL など、別言語のテキストを含む文字列パラメーターに追加してください。 そうすると、他の PhpStorm の機能を表示することができます。
PhpStorm 2020.3 では、これら両方の静的解析ツールをエディター内で問題箇所をハイライトするための最優先ツールとして使用できます。 これらを composer.json
の dev 依存関係として追加し、ツール付近のレンチアイコンをクリックして対応するインスペクションをオンにしてください。
また、PhpStorm は @psalm-*
タグをコード補完して特別扱いするため、ハイライト、未定義のクラスなどに関して問題が生じることはありません。 多くの場合、タグから @psalm-
の接頭辞を削除しても安全になりました。つまり、@psalm-return
は単純に @return
に、@psalm-param
は @param
にすることができます。
スカラー、数値、定数付きの型など、多くの psalm の型がサポートされています。 その結果、インスペクション、コード生成、補完などの型推論を利用するすべての機能の精度が向上しました。
Xdebug 3 は PHP デバッガーを新たに改修したものです。 大幅に速度が向上しており、より簡単にセットアップできます。
Xdebug 3 を構成するには、XDEBUG_MODE=debug
を指定するだけです。
Xdebug のデフォルトのデバッグポートが 9000 から 9003 に変更されました。 移行を容易にするため、PhpStorm は両方のポートをデフォルトでリッスンしています。 Xdebug のポートや他の設定は、Preferences/Settings | Languages & Frameworks | PHP | Debug で調整できます。
Xdebug 3 の詳細については、アップグレードガイドを参照してください。
PhpStorm 2020.3 は JetBrains の共同開発およびペアプログラミング用の新しいサービスである Code With Me をサポートしています。 Code With Me を使用すると IDE で現在開いているプロジェクトを他のユーザーと共有し、リアルタイムで共同作業を行うことができます。
Code With Me の詳細については、これらの記事を参照してください。
PhpStorm は Tailwind CSS を使用した作業の生産性を向上させます。
IDE が Tailwind のクラスを自動補完し、マウスオーバーで最終的な CSS のプレビューを表示し、tailwind.config.js
ファイルを使用したカスタマイズを支援します。
Guzzle は最も人気のある PHP 用 HTTP クライアントの一つです。 PhpStorm 2020.3 では、実際のコードを実行することなく Guzzle のリクエストをテストできます。
リクエストがサポートされている場合は、その横にガターアイコンが表示されます。 それをクリックすると、パラメーターが事前入力された新しい HTTP
スクラッチファイルが作成されます。
リクエストを調整し、それを .http
ファイルとしてプロジェクト内に保存できます。
HTTP リクエストから cURL 文字列を取得するには、HTTP リクエストエディターで Alt+Enter を押し、Convert to cURL and copy to clipboard(cURL に変換し、クリップボードにコピー)オプションを選択します。
cURL 文字列はターミナルやお好みの HTTP クライアントで使用できます。
Mermaid.js の図形とグラフを IDE 内部に表示できるようになりました。 そのためには、Preferences/Settings | Languages & Frameworks | Markdown でサポートを有効にしてください。
プレビューペインの右上には、エディターとのスクロール同期をオンオフする Auto-Scroll Preview(プレビューを自動スクロールする)ボタンがあります。
Ctrl+Alt+L でコードを再フォーマットする際に機能する、人気の Markdown コードスタイルのプリセットを多数追加しました。 設定は Preferences/Settings | Editor | Code Style | Markdown にあります。
文法チェックエンジンがより多くの言語をサポートするようになり、文法チェックの品質が向上しました。
ミスがハイライトされる際には、説明と修正候補を含むポップアップが表示されます。
ハイライトされたテキストにキャレットを移動させて Alt+Enter を押すと、以前のようなネストしたリストではなく、すべての置換候補が最上位に表示されます。
タブを画面の上下左右にドラッグし、複数のタブを並べて開くことができます。
Project ビューや検索ウィンドウでファイルを選択して Shift+Enter を押し、タブを分割モードで開くこともできます。
ファイルを実際に開かず、専用のタブでプレビューできます。 この機能を有効にするには、Project ビューの歯車アイコンをクリックして Enable Preview Tab (プレビュータブの有効化)と Open Files with Single Click(シングルクリックでファイルを開く)の両方を選択します。 プレビュー中のファイルの編集を開始すると、通常のファイル編集画面に移行します。
Search Everywhere(どこでも検索)ポップアップ(Shift+Shift)の結果表示が若干変更されました。 検索結果が種類ではなく、検索クエリとの関連性に基づいてグループ化されるようになりました。
また、Search Everywhere で単純な数値計算を実行することもできます。 数値や数値演算子を入力すると、計算結果がすぐに表示されます。 このため、計算機アプリに切り替える必要がなくなり、作業の流れが妨げられることはなくなります。
また、Search Everywhere はブランチとコミットに関する情報を含む Git の履歴を検索できます。
WebStorm 2020.3の<1>すべての新機能1>と改善点は、PhpStorm 2020.3 でも初期状態で、またはプラグインリポジトリから無料のプラグインをインストールして利用できます。
TypeScript 言語サービスを Problems ツールウィンドウに統合し、TypeScript ツールウィンドウを廃止しました。これにより、コード内の問題箇所を一箇所でレビューしやすくなりました。 また、これまで TypeScript ツールウィンドウにあったアクションをステータスバーの専用ウィジェットに移動しました。
コード内に未解決の React コンポーネントがある場合、そのコンポーネントの位置にキャレットを置き、Alt+Enter を押してから Create class/function component(クラス/関数コンポーネントの作成)をリストから選択すると、IDE が適切なコード構成を作成します。
PhpStorm 2020.3 は Git ステージングエリアのサポート機能を搭載しています。 サポートを有効にするには、Preferences/Settings | Version Control | Git で Enable staging area(ステージングエリアを有効化)チェックボックスにチェックを入れてください。
ステージしたファイルとアンステージしたファイルを表示するには、Alt+0 を使用して Commit ツールウィンドウに戻ってください。
ファイルの近くにある + アイコンをクリックすると、ファイルをステージできます。
エディターで変更箇所付近のガターアイコンを使用し、特定の行をステージできます。
DataGrip 2020.3 の新機能をご覧ください。掲載されているすべての記事は PhpStorm でも使用できます。
PhpStorm が Couchbase Query サービスをサポートするようになりました。 また、新たに 2 つのエクストラクターを導入しました。1 つのカラムをコンマ区切りの文字列にコピーできるようにする One-Row と、複数の新しい行を挿入する単一の INSERT ステートメントを生成する SQL-Insert-Multirow
です。