PHP 7.4 プロパティ型の対応

PHP 7.4 が11月末にリリースされる予定です。PhpStorm は PHP 7.4 を容易に展開できるようスタートしていますので、テストをしたり移行の計画をスタートする時間があります。最も期待される機能はおそらく新しいプロパティ型です。PhpStorm 2019.2 ではすでにフルサポートしています。新しいインスペクションは型違反をハイライトし、クイックフィックス Add declared type for the field を使ってコードを更新することができます。PhpStorm はコンストラクタ内の PHPDoc 、デフォルト値、または引数型の宣言に基づいて型を自動的に見つけます。

PHP 7.4 Typed Properties Inspection

リアルタイムで重複を検索

プロジェクト内に同じコードブロックが何回も現れると変更に時間がかかる可能性がありますし、すべての箇所の更新を忘れると後戻りのバグを発生させてしまう可能性もあります。PhpStorm は重複コードの生成をしないようリアルタイムで重複箇所をハイライトしてくれるので、簡単に気づくことができます。既存の重複に遭遇した場合やコードで重複を作成してしまった場合に、このことを瞬時に把握できるでしょう! 新しいインスペクションは Duplicate code fragment と呼ばれ、デフォルトで利用可能になっています。設定は Preferences | Editor | Inspections | General で行ってください。もちろん、プロジェクト全体(またはカスタムのスコープ)に対していつでもインテンションを実施することができます。その場合は Code → Run Inspection by Name メニューを実行してください。

正規表現のハイライトとチェック

正規表現は文字列の検索や置換に非常に便利なツールです。PhpStorm では PHP 内に正規表現を自動的に注入できるようになりました。コードで preg_* 関数を使ったときはいつでも、そのパターンがハイライトされ、正しいかどうかが検証されるようになりました。さらに、IDE でパターンが正しいかをテストできるようにもなりました! パターン上にキャレットを移動し、Alt+Enter を押下するとクイックアクション Check RegExp が現れます。

リモート PHP インタープリタを通じた Run Composer

以前は Composer を実行するのにローカルの PHP インタープリタを持つ必要がありました。これにより本番環境との環境の不一致や、新しいプロジェクトメンバが都度ローカル PHP インタープリタをセットアップしなければならないという弊害がありました。PhpStorm 2019.2 では Composer を実行するリモートインタープリタを選択できるようになりました。Docker や Vagrant、SSH 経由など、それ以外のものでも構いません – それぞれにわかりやすい名前をつけることもできます!

Run Composer via any remote PHP interpreter

インテンション(空気を読む機能) & クイックフィックス

String Juggling ツールボックスでの新しいインテンション

PhpStorm は文字列を操作する複数のインテンション Alt+Enter を搭載しています。2019.2 で新しいものがあります。

sprintf 式内で新しいパラメータを使う必要がある場合、シンプルにそれを選択し、Extract selected string part as format function argument インテンションを実行してください。PhpStorm はあなたにとって正しいパラメータの場所を選んでくれます。これは連結でも同様に使えます。

単一行を複数行に変換、また逆に戻す

PSR-2 によると、80 文字以上の行は、それぞれ80文字以下の複数の後列行に分割すべきだとあります。パラメータのリストや配列がとても長くなってしまった場合は、Alt+Enter を押下し、新しいインテンションである Split comma-separated values into multiple lines をワンクリックするだけで分割できます。その反対のインテンションは複数の項目を1行に結合したい場合に利用できます。

Switch ステートメントのインテンションとインスペクション

既存のブランチをコピーすることでブランチをより速く追加、編集することができるようになりました。Case ステートメント上で Atl+Enter を使用し、Copy ‘switch’ branch インテンションを選択してください。コピーした箇所の編集を忘れないようにしてください。なぜなら Switch ブロックに重複したブランチがある場合、つまり同じ本体で冗長かまたは間違って記載された可能性がある場合は PhpStorm が警告するためです。また、PhpStorm 2019.2 では、コード内でデフォルトのブランチのない swicth ステートメントがある場合、Alt+Enter を使ってクイックフィックスできるようにもなりました。

PHPT サポート

.phpt ファイルはシンプルな方法で機能テストを書くことを助けてくれます。このフォーマットは PHP のコアをテストするために使われています。 PhpStorm 2019.2 では.phpt ファイルのサポートに対応しました。セクションとスクリプトのハイライト、セクションに一致する PHP と INI 言語の自動注入、セクション名の補完、EXTERNAL セクションで参照されたファイルへのジャンプなどができるようになっています。

PHPT support

Docker

Services ツールウィンドウ

Docker は新しい Services ツールウィンドウに移動しました。このツールウィンドウの目的は、全ての接続および実行中のプロセスを参照できる単一の場所を提供することにあります。今のところ PhpStorem では Docker と Database 接続を含んでいます。

Docker コンテナのファイルシステムを参照

実行中の Docker コンテナのファイルシステムを参照可能になりました。ファイルシステムは新しく追加された Files タブに表示されます。

Browse Docker container file system

HTTP Client

HTTP クライアントでの cURL フォーマット

ブラウザの開発ツール、ドキュメント、ターミナル、または他の場所でそのままシンプルに cURL のリクエスト文字列をコピーし、PhpStorm 内の .http ファイルにペーストして参照するとフルリクエストに拡張されます! その後はスマート補完の力で実施したいことを試してください。

HTTP クライアントがクッキーを保持

サービスにおいて認証を1回リクエストし、それに続くリクエストで追加の権限を必要とするいくつかのエンドポイントをコールしたとします。以前は、最初のレスポンスからクッキーを失う場合がありました。しかしもう必要はありません。IDE はすべてのクッキーを保持し、次のリクエストでそれらを送るようになりました。

Web テクノロジー

従来通り WebStorm の全機能と改善 は PhpStorm で利用可能です。それらはすぐに使えるかまたは プラグインリポジトリ からフリーのプラグインと共に使えます。

JavaScript と TypeScript のスマートインテンション

Alt+Enter で表示される新しい ‘Propagate to destructuring declaration’ インテンションでは、別の分解宣言を余分な変数と置換できるようになりました。分解宣言を完全に排除するには、’Replace destructuring with property or index access’ インテンションアクションを使ってください。

IDE は条件式内の boolean の表現に不要な箇所あれば警告し、シンプル化するよう提案してくれます。

Smart intentions for JavaScript and TypeScript

改善された JavaScript のリネームリファクタリング

JavaScript や TypeScript ファイルにおいてシンボルをリネームする際、IDE は動的な利用箇所も一緒にグループ化するようになりました。デフォルトではそれらをリファクタリングから除外します。このことでリファクタリングはより正確になり、Refactoring Preview ウィンドウで何を正確にリネームする必要があるかをより詳細に制御できます。

Improved Rename refactoring for JavaScript

Vue.js のより良いサポート

あなたの Vue.js アプリケーションでは Vuetify、BootstrapVue を使っていますか?これらおよび他の Vue コンポーネントライブラリからのコンポーネントやそれらの部品のためのコード補完がより正確になりました。このことは IDE でこれらのライブラリを使って作業できるように適用した 新しいアプローチ によって実現しました。

Better support for Vue.js

20以上の言語のシンタックスハイライトに対応

PhpStorm 2019.2 では、Puby、Phthon、Go などを含む20以上の異なるプログラミング言語に関するシンタックスハイライト機能を提供します。ハイライトは バンドルしている TextMate に基づいており、他の言語もハイライトをする必要がある場合は、 その言語をバンドルした TextMate をダウンロードし、IDEにインポートしてください。

EditorConfig

PhpStorm は.editorconfig ファイルをサポートしました! あなたの望むことができるようになります。複数のフォルダにファイルを作成することで、そのフォルダ内のファイルだけにコードスタイル設定を適用することができます。
EditorConfig 標準の全ての標準プロパティに加えて、PhpStorm 特有のコードスタイルオプションを指定できるようになりました。チーム全体で共通のコードスタイル標準を定義するのがこれまでになく簡単になりました。

Shell Scripts

Shell Script サポート

このリリースでは、シェルスクリプトのためにワードやパス補完、クイックドキュメンテーション、テキストのリネームを含むリッチな編集を提供しました。

より進んだシェルスクリプトサポートのために PhpStorm にいくつかの外部ツールを連携しました。今後はスクリプト内でエラーを見つけて修正するために Shellcheck を使うことができます。また、Alt+Enter によって必要なコマンドのフルの表現を取得できる Explainshell も利用できます。

バージョン管理

ignoreファイルの対応

プロジェクトツリーまたは VCS ツールウィンドウの Local Changes タブのいずれかで無視するファイルのリストを追加できるようになりました。.gitignoreファイルを編集したい場合は、エディタ内でパスの補完ができるようになっています。

VCS Add to ignore

ダイアログ不要の新しいコミットフロー

PhpStorm 2019.2 は Git や Mercurial を利用するプロジェクトに大きな変化をもたらします。Version Control ツールウィンドウの Local Changes タブからコミットできるようになりました。コミットダイアログは IDE の他の部分をブロックすることはないので、変更したファイルをレビューし、必要に応じて変更を加えることもできます。これを使うには、Settings/Preferences | Version Control | Commit Dialog の ‘Commit from the Local Changes without showing a dialog’ チェックボックスを選択してください。

New commit flow without a dialog

忘れたファイルをリマインド

いくつかのファイルをコミットする際、現在コミットされているものと一緒にコミットすることが多い他のファイルも変更されていることに PhpStorm 2019.2 が気がついた場合、IDE はそれについて警告するので何も見逃さなくなります。

Remind about forgotten files

VCS Log タブのカスタマイズ

Version Control ツールウィンドウの Log タブで参照したいカラムを選択できるようになりました。瞳アイコンをクリックして ‘Show Columns’ を選び、author、date、commit hash など表示したいカラムを選択してください。

Customize VCS Log tab

データベースツール

Full-text Searchで包括的な結果を提供

正しいロケーションを知らなくても必要なデータを探すことができるようになりました。検索したいデータソースまたはデータソースのグループで右クリックし Full-text Search メニューを選択もしくは Ctrl+Alt+Shift+F / Cmd+Alt+Shift+F を押下してください。結果はフィルタリングされ、データが見つかった文字列のみが表示されます。カラムが多すぎてデータを探せない場合は、データエディタでテキスト検索を利用してください (Ctrl/Cmd+F)。

Full-text Search offers comprehensive results

検索やナビゲーションでデータソースによるフィルタリングが有効に

特に同じような項目がたくさんある場合、GoTo ポップアップ内でオブジェクトを検索するのは常に容易ではありません。PhpStorm 2019.2 では、特定のデータソースまたはソースのグループのどこを検索するのかを選択できるようになりました。同じことが Find In Path でもできます。このことは他のオブジェクトのDDL のソースコードを検索する際に非常に便利です。

Filtering by a data source available in search and navigation