PhpStorm の新機能

PhpStorm 2020.2の新機能

PHP 8ユニオンタイプのサポート、PHPの新しい制御フローエンジン、Extractクラスのリファクタリング、GitHubプルリクエストの完全サポート、新しいインスペクションウィジェット、OpenAPIのサポート。

PHP 8ユニオンタイプ

ユニオンタイプのサポートとともに、PHP 8のサポートのロールアウトを開始しました。PHP 8.0では、プロパティ、引数、戻り値の型に対して複数の型を宣言することができます。PhpStormはすでにこの機能を完全にサポートしており、効果的な移行を支援できます。

Convert PHPDoc to native union types

PHPDocをネイティブの共用体型に変換する

以前はPHPDocを介して提供されていたユニオンタイプが、現在PhpStormはそのような発生を強調表示しています。

Alt+Enter クイックフィックスにより、ネイティブのユニオンタイプに変換できるようになりました。

これは、関数の引数、戻り値の型、プロパティなど、共用体型が適用できる場所であればどこでも機能します。プロパティの場合、デフォルト値も考慮されます。

Switch Language Level to PHP 8

言語レベルをPHP 8に切り替える

PHP 8関連の機能を有効にするには、次のいずれかの方法で言語レベルをPHP 8に切り替えます。

  • コードエディターで直接 Alt+Enter クイックフィックスを使用します。
  • 環境設定 | 言語 & フレームワーク | PHPに移動し、PHP 言語レベルリストを使用します。
  • composer.jsonでPHPバージョンの要件を指定すると、PhpStormが自動的にそれを取得します。
Perform type validation

タイプ検証を実行する

PhpStormは呼び出しを分析し、可能なタイプを計算し、ユニオンタイプに関連する問題領域を強調表示します。

チェックは、プロパティ、引数、戻り値のすべてのレベルで機能します。

複雑なコードベースでは、一目で問題を確認できます。PhpStormは、コードが実行される前でも注意が必要な場所を強調表示します。

Detect duplicate and redundant types

重複した冗長なタイプを検出する

禁止または冗長なタイプの組み合わせはたくさんあります。例:

  • bool|false
  • Foo|Foo
  • object|User
  • iterable|array または iterable|Traversable

それらすべては無効としてPhpStormによって強調表示されます。

Work with nullable types

null許容型を操作する

null許容型が1つしかない場合、PHP 8では ?Type 表記または Type|null のいずれかを使用できます。

ただし、nullと組み合わせて複数の型がある場合、?Type1|Type2 の使用はあいまいであるため禁止されています。

PhpStormはこれらの違反を強調表示し、変換する Alt+Enter クイックフィックスを提供します。

Follow variance rules

差異ルールに従う

継承中に、次の基本的なルールに従っている場合、PHPではタイプを変更できます。

  • パラメータタイプは反変です。つまり、拡張できます。
  • 戻り値の型は共変です。つまり、絞り込むことができます。
  • プロパティタイプは同じタイプに評価される必要があります。

幸い、PhpStormを使用すると、コードをチェックして違反を強調表示するため、これらのルールを覚えておく必要はありません。

Use pseudotype false

疑似型falseを使用する

PHP 8では、共用体型宣言でのみ使用できる特別な false 疑似型があります。

これは標準ライブラリで広く使用されています。たとえば、strpos() または array_search()を参照してください。負の結果を示すために他の場所に適用できます。

PhpStormは誤った使用箇所を強調表示し、型推論を考慮に入れます。

Remove redundant PHPDoc

冗長なPHPDocを削除する

ネイティブな共用体型宣言を追加した後、PHPDocは追加情報を提供しないため、不要になる場合があります。

これで、クイックフィックス Alt+Enterでそれを削除できます。

新しい制御Flowエンジン

Condition always true

条件は常に真

PhpStormは、複雑なコードパスを分析し、if-else ブロックの条件が意味を成しているか、冗長であるかを検出できるようになりました。

Result of ‘instanceof’ is always true

「instanceof」の結果は常に真です

条件と同様に、PhpStormは、instanceof チェックが適切である場合、または型階層の推定されたタイプが原因で常にtrueと評価されるかどうかを検出できます。

New action: Type Info

新規アクション: 型情報

新しいアクションでは、選択した式の推測されたタイプを確認できます。

コーディング時に、ショートカット Ctrl+Shift+P または表示 | 型情報メニューを使用して式を選択し、そのタイプを確認できます。

Expression is always ‘null’

表現は常に「null」です

PhpStormは、変数が null のみであることが保証されている場合を検出できます。この場合、IDEは式を簡略化してより明確にすることを提案します。

品質ツールの改善

Quality Tools Improvements
  • Docker Composeを介して高品質のツールを実行できるようになりました。
    これを行うには、環境設定/設定 | 言語 & フレームワーク | PHPに移動し、Docker Composeに基づく新しいリモートインタープリターを追加します。
  • PHP-CS-FixerおよびPHPCBFの再フォーマットアクションは、リモートインタープリターでも実行できるようになりました。
  • PHP_CodeSnifferの ruleset.xml"exclude-pattern" セクションがある場合、PhpStormはこれを考慮に入れ、指定されたパスにあるファイルを分析しません。

Composerの改善

Composerの依存関係の管理は、composer.jsonファイル内のエディターで直接行うことができます。

Support for custom Satis/Packagist packages

カスタムSatis / Packagistパッケージのサポート

“repositories” セクションでカスタムソースが指定されている場合は、カスタムパッケージの補完を取得します。

現在、カスタムリポジトリのキャッシュの現在の状態を示すガターアイコンがあります。

Completion for multiple versions

複数バージョンの完成

パッケージにコンマまたはパイプ(||)で区切られた複数のバージョンがある場合、PhpStormはこのパッケージで使用可能なすべてのバージョンを補完します。

以前は、~ , ^または >=を入力すると補完が失われていましたが、現在はcomposer.jsonのこれらの範囲制約のいずれかで期待どおりに機能します。

Quick access to settings of tools added as dependencies

依存関係として追加されたツールの設定へのクイックアクセス

PhpStormは、サードパーティツールとの多くの統合を提供します。これで、サポートされているツールがcomposer.jsonで宣言されている場合、その横のガターにレンチアイコンが表示されます。それをクリックして、設定の対応するセクションに直接移動できます。

クラスの抽出リファクタリング

Extract Class Refactoring

クラスが雑然として多くの追加の責任が課せられた場合、メソッドとプロパティをクラスの抽出リファクタリングを使用して新しいクラスに移動することで、クラスをリファクタリングできるようになりました。

移動する関数、メソッド、またはプロパティを選択し、Ctrl+T を押して クラスの抽出を選択します。

リファクタリングにより、新しいファイルが作成され、クラスのオブジェクトがコンストラクターでインスタンス化され、使用箇所が自動的に調整されます。

コマンドラインツールの改善

Command Line Tools Improvements

リモートインタープリターのサポートがPHPコマンドラインツールで利用可能になりました。

環境設定/設定 | ツール | コマンド・ライン・ツールのサポートで、新しいツールエントリを追加し、構成済みのリモートインタープリターの1つを選択します。

Laravel Artisanが自動的に検出されるようになりました! つまり、Laravelプロジェクトを開いたときに、Ctrl-Ctrl を押してコマンドの入力を開始できます。PhpStormは補完を提供し、使用可能なコマンドを提案します。

新しいインスペクション

Array used only with write access

書き込みアクセスでのみ使用される配列

コードのどこかで宣言および更新された配列があり、それが読み取られない場合、その配列は冗長であり、コードにノイズを追加している可能性が高いことを意味します。

インスペクションはそのようなケースを検出し、配列を削除してコードをよりクリーンにするように求めます。

Typed property might be unassigned

タイプされたプロパティが割り当てられていない可能性があります

型指定されたプロパティにデフォルト値がない場合、初期化されていないと見なされます。初期化されていないプロパティを読み取ると、TypeError が生成されます(マジック __get() が定義されていない場合)。

PhpStormは、初期化されていないプロパティを検出し、読み取ろうとするコードを強調表示します。

GitHubプルリクエストの完全サポート

プルリクエストのワークフロー全体をPhpStormで実行できるようになり、ブラウザに切り替える必要がなくなりました。プルリクエストを管理できます。タイムラインとイン行コメントを表示します。コメントとレビューを追加します。変更を受け入れます。

Full Support for GitHub Pull Requests

GitHubプルリクエストの操作を開始するには、ツールバーまたはメインメニューVCS | Git | プルリクエストの表示からプル・リクエストツールウィンドウを開きます。

次に、リストからプルリクエストを選択して、メッセージ、ブランチ名、作成者などの詳細をすべて表示します。

ここから、変更されたファイルを確認し、変更についてコメントすることで、コミットレベルと行レベルの両方でレビュープロセスを開始できます。

IDEを移動せずにプルリクエストをマージすることも可能です。プルリクエストからローカルブランチを作成する必要はありません。すべてそのままで機能します。

OpenAPIサポート

PhpStorm 2020.2はOpenAPI仕様(英語)プラグインをサポートしています。これはJetBrainsによって開発された無料のプラグインであり、OpenAPI仕様ファイル(openapi.yaml / openapi.jsonおよびswagger.yaml / swagger.json)で補完、ナビゲーション、および検証を提供します。

OpenAPI Support

プラグインはまた提供します:

  • Swagger UI統合。
  • コード生成。
  • 組み込み構造OpenAPI仕様の違い。
  • 仕様からHTTPクライアント要求を作成するためのガターアイコン。
  • HTTPクライアントのエンドポイントの自動補完。

新しいインスペクションウィジェットと問題ビュー

New Inspections Widget and Problems View

エディターの右上隅に、現在のファイルの問題の概要が記載された新しいインスペクションウィジェットが表示されます。

  • 矢印をクリックして課題間を移動します(またはショートカット F2 / Shift+F2を使用します)。
  • ウィジェットをクリックして、課題ツールウィンドウでファイル内のすべての課題のリストを表示します
  • ウィジェットにカーソルを合わせて設定ポップアップを表示し、強調表示する課題を選択します。

Web テクノロジー

WebStorm 2020.2すべての新機能と改善点は、PhpStorm 2020.2でそのまま使用できるか、プラグインリポジトリ(英語)で無料のプラグインを使用できます。

JavaScriptプロジェクトのデフォルトのフォーマッターとしてのPrettier

組み込みのフォーマッターの代わりにPrettierを使用してコードを整理したいですか?今回の更新により、以前よりもさらに簡単になりました。新しいコードの再フォーマットについてチェックボックスをオンにすると、.js、.ts、.jsx、および.tsxファイルを再フォーマットするたびにIDEがPrettierを使用します。他のファイルタイプも簡単に追加できます。

クラス最高のVue.jsサポート

Nuxt.jsのサポート、Vue固有のコードスタイル設定、TypeScriptプロジェクトでのVueに関する改善、およびその他の多くの機能が昨年追加されます。PhpStormでのVueのサポートはこれまでにないほど進んでいます!

JavaScriptの新機能で時間を節約

新しいスマート Alt+Enter インテンションは、いくつかのアクションをより高速に実行できます。例:数値インデックスを持つforループを forEach 配列メソッドにすばやく変換できるようになりました。JavaScriptとTypeScriptファイルでドキュメントのコメントを確認することも簡単になりました。エディターで直接レンダリングできるため、注意散漫を最小限に抑えることができます。

バージョン管理

Support for Git installed in WSL 2

WSL 2にインストールされたGitのサポート

PhpStorm 2020.2は、LinuxおよびWindowsファイルシステムにあるプロジェクトを操作するために、WSL 2にインストールされたGitをサポートしています。

IDEは、プロジェクトの場所に応じてGit実行可能ファイルを切り替えることができます。プロジェクトがWSLから( \\wsl$ パスを介して)開かれると、IDEは自動的にWSLからGitに切り替え、IDEのすべてのGit関連機能を使用できるようにします。

ブランチを比較するための新しいUI

2つのブランチを比較して、どのコミットが互いに属していないかを確認する場合、PhpStorm 2020.2はGitツールウィンドウではなくエディターにログを表示します。これにより、すべての情報を表示するのに十分なスペースが確保されます。

Git ブランチポップアップメニューVCS | ブランチからCompare with Currentアクションを選択します。

Drop commit action

コミットアクションの削除

Gitツールウィンドウのログタブで選択し、コンテキストメニューからコミットの削除を選択することで、冗長なローカルコミットを簡単に削除できるようになりました。

Squash local commits

ローカルコミットのスカッシュ

たとえば、プッシュする前に履歴をクリーンアップするなど、複数のローカルコミットを1つのコミットに結合することもできます。

Gitツールウィンドウでcommitを選択し、コンテキストメニューからスカッシュ・コミット…を選択します。

IDEは、舞台裏で対話的なリベースを実行します。

データベース・ツール

DataGrip 2020.2の新機能を参照してください。これらの機能はすべてPhpStormでも利用できます。

Separate editor for cell values

セル値の個別のエディター

セルに大きな値がある場合は、別のパネルで表示または編集できます。右側のツールバーを使用してソフトラップモードを切り替えることもできます。コードエディターのすべての機能をデータに使用します。

Google BigQuery dialect

Google BigQueryダイアレクト

新しいSQLダイアレクトであるGoogle BigQueryを追加しました。BigQueryの完全なサポートはまだここにはありませんが、すべてのものがどこかで始まる必要があります。これまでのところ、Google BigQueryを使用している場合、PhpStormはクエリを正しく強調表示して、コーディング支援を提供できます。

DML preview

DMLプレビュー

データエディターで変更を表すクエリを確認できます。保留中の変更がある場合にアクティブになるDMLボタンがあります。PhpStormはJDBCドライバーを使用してテーブルを更新するため、このクエリはデータを変更するために実行される正確なSQLではありませんが、ほとんどの場合は同じです。

その他の改善点

  • getterおよびsetterのカスタマイズ
  • 1つのウィンドウ内の複数のプロジェクトの解決
  • 新規アクション: 選択した行の端にキャレットを追加