今年、PhpStormの最後のメジャーリリースを発表できることをうれしく思います。カットの下には、すべての変更と新機能の詳細な分析があります。
- PHP 8:すべての言語機能とストーム属性のサポート。
- PHPStan Psalm .
- Xdebug 3 , IDE.
- HTTP- Guzzle cURL.
- .
- Mermaid.js, , .
- Git stage changelists.
- SQL MongoDB.
- Tailwind CSS .
PHP 8
PHP8.0がリリースされました。すべての貢献者とリリースマネージャーに感謝します!
PhpStorm 2020.3は、最新の言語変更をすべてサポートしています。利用可能なものとIDEでの使用方法を見てみましょう。
ステータスバーの言語バージョン
これで、ステータスバーにプロジェクトの現在のPHPバージョンが常に表示されます。そこからバージョンを切り替えることもできます。
ラジオボタンがアクティブでない場合は、PHPのバージョン制限がcomposer.jsonに設定されていることを意味します。
名前付き引数
PHP 8では、パラメーター名を指定することにより、関数とメソッドへの引数を渡すことができます。呼び出しは自動的に文書化され、オプションのパラメーターは完全な意味でオプションです。
[名前識別子の追加]クイックフィックスを使用すると、引数に名前を追加できます。引数の タイプ
ミスまたは誤った名前が強調表示されます:
渡された値がデフォルトのパラメーター値と一致する場合は、安全に削除できます:
オプション配列の代わりに、名前付き引数を使用してパラメーターのセットを渡すことができます。必要なものだけを渡します。この方法で渡される引数は、配列要素とは異なり、タイプセーフです。
属性
属性は、PHPDocコメントの代わりにPHPでメタデータを指定する新しい構造化された方法です。
属性を作成するには、クラスを宣言してマーカーを追加する必要があります
#[Attribute]
。ここで、PhpStormは、強調表示、コード補完、使用法の検索、リファクタリングなどを支援します。
PHP自体は、呼び出され
ReflectionAttribute::newInstance()
たときにのみ属性の有効性をチェックします 。また、Reflectionを介して属性にアクセスしない場合、不要なクラスをロードしたりオブジェクトを作成したりしないように、属性は完全に無視されます。
ただし、PhpStormは、Reflection APIを実行せずに、エディター内のすべてを検証します。次のルールがチェックされます。
- 指定されたクラスは実際に属性になることができます。
- この属性は、許可された場所(クラス、プロパティ、メソッド、パラメーター、関数、またはクラス定数)にのみ適用されます。
- 属性は、フラグで宣言されている場合にのみ繰り返されます
Attribute::IS_REPEATABLE
。
Symfonyで動作する属性は次のとおりです。
PHP8ストーム属性
PhpStorm 2020.3では、名前名の箱から出してすぐにいくつかの属性を使用できます
\JetBrains\PhpStorm\
。
何も接続せずに、コードベースですぐに使用できます。
ただし、他の静的分析ツールを追加で使用し、Class not foundエラーを受け取りたくない場合 は、の依存関係としてJetBrains / phpstorm-attributes属性パッケージを 追加する価値があります
composer.json
。
#[非推奨]
この属性をPHPDoc @ deprecatedタグとして使用して、将来削除されるメソッド、クラス、またはクラス定数をマークします。
ここでの利点は、レガシーコードの代替を指定でき、ユーザーがアップグレードしやすくなることです。
実際の例を見てみましょう。最近リリースされた Symfony5.2では、このメソッドは
\Symfony\Component\DependencyInjection\Alias::setPrivate()
非推奨になりました。そこ
#[Deprecated]
に属性を追加 すると、移行を簡素化できます。
#[Deprecated(
reason: 'since Symfony 5.2, use setPublic() instead',
replacement: '%class%->setPublic(!%parameter0%)'
)]
#[ArrayShape]
この属性は、何らかの理由でクラスを宣言できない場合に、単純なデータ構造またはオブジェクトのような配列を操作する場合に役立ちます。
構文は次のようになります。
#[ArrayShape([
// ‘key’ => ’type’,
‘key1’ => ‘int’,
‘key2’ => ‘string’,
‘key3’ => ‘Foo’,
‘key3’ => App\PHP 8\Foo::class,
])]
function functionName(...): array
タイプは、文字列として、またはFQN文字列または定数の形式のクラス参照として指定できます
::class
。
「形状」を定義する配列は、定数に入れて再利用できます。
const MY_ARRAY_SHAPE = [];
#[ArrayShape(MY_ARRAY_SHAPE)]
PhpStorm
#[ArrayShape]
では、たとえば、いくつかの標準PHP関数に属性で 注釈を付けています
parse_url()
。
幸い、単一行の属性構文には下位互換性があります。つまり
#[ArrayShape]
、PHP 7プロジェクトで1行を書き込む と、PHPインタープリターはこの行をコメントとして解釈します。
PHPインタープリターとは異なり、PhpStormはとにかく属性を解析します!したがって、プロジェクトでPHP 7.4以下を実行している場合でも、この追加の恩恵を受けることができます
#[ArrayShape]
。
#[不変]
不変オブジェクトは、初期化または作成後に変更することはできません。それらを使用すると、プログラムの状態がより予測可能になり、デバッグが容易になります。
属性
#[Immutable]
を使用して、クラス全体または特定のプロパティをマークして、変更できないことを示すことができます。
PhpStormは、そのようなオブジェクトとプロパティの使用をチェックし、変更の試みを強調表示します。
プロパティの変更は、デフォルトでコンストラクターで許可されていますが、プライベート/保護されたメソッドでも許可できます。これは、定数を使用して行われ
CONSTRUCTOR_WRITE_SCOPE
、
PRIVATE_WRITE_SCOPE
、
PROTECTED_WRITE_SCOPE
コンストラクタに渡されます
#[Immutable]
。
#[純粋]
この属性は、純粋な関数、つまり副作用を生成しない関数をマークします。そのような関数は、それらの実行の結果がその後使用されない場合、安全に削除できます。
関数がクリーンとしてマークされているが、その本体の外部スコープ外で何かを変更しようとすると、PhpStormは安全でないコードを強調表示します。
すべての標準的な純粋なPHP関数は、PhpStormですでにこの属性でマークされています。
#[ExpectedValues]
この属性を使用して、関数がパラメーターとして受け取る値と返すことができる値を指定できます。
これは実質的にないと同じことです
expectedArguments()
で
.phpstorm.meta.php
。唯一の違いは、メタバージョンがかなり補助的であり、属性が他に可能な値がないことを厳密に示していることです。
たとえば、カウント関数について考えてみます。
count ( array|Countable $array_or_countable [, int $mode = COUNT_NORMAL ] ) : int
2番目の引数は整数ですが、実際には任意の整数ではなく、定数
COUNT_NORMAL
またはの 1つです
COUNT_RECURSIVE
。
属性
#[ExpectedValues]
が状況を改善する方法は 次のとおりです。
つまり、自動完了が表示され、他の何かが渡されると、エラーが強調表示されます。
可能な値またはビットマスクを指定する方法
:
:
- :
#[ExpectedValues(values: [1,2,3])]
- :
#[ExpectedValues(values: [‘red’, ‘black’, ‘green’])]
- :
#[ExpectedValues(values: [COUNT_NORMAL, COUNT_RECURSIVE])]
- :
#[ExpectedValues(values: [Code::OK, Code::ERROR])]
:
-
#[ExpectedValues(values: [1,2,3])]
, .
-
#[ExpectedValues(flags: [1, 2, 3])]
, ,1 | 3
.
-
#[ExpectedValues(valuesFromClass: MyClass::class)]
, `MyClass
`.
-
#[ExpectedValues(flagsFromClass: ExpectedValues::class)]
, `MyClass`.
別の例#[ExpectedValues]
response()
Laravelからヘルパーを連れて行きましょう 。2番目のパラメーターとしてHTTPステータスコードを取ります。
2つの問題があります
- 可能なコードによる自動補完はありません
- エディタでの値の検証なし
属性を追加してこれを修正しましょう
#[ExpectedValues(valuesFromClass: Response::class)]
# [返品不可]
一部の関数は、スクリプトの実行を停止できます。出口点などの機能を属性でマークすると、
#[NoReturn]
制御フロー分析が向上します。
#[言語]
この属性は、RegExp、SQL、DQLなどの一部の言語のテキストを期待する文字列パラメーターに追加できます。
引数については、強調表示と追加のオプションが表示されます。
PHP8の新機能に戻りましょう。
コンストラクターでのプロパティの宣言
通常のプロパティは、[プロモートされたプロパティに変換]クイックフィックスを使用して、プロモートに変換したり、その逆に変換したりでき ます。
PhpStormは、プロパティがPHP8で許可されている方法でのみ使用されるようにします。
- プロパティは、コンストラクターでのみ宣言できます。
- 抽象コンストラクターで宣言することはできません。
- この方法でバリアディックプロパティを宣言することはできません。
- プロパティのタイプを「Callable」にすることはできません。
- プロパティのオーバーライドは許可されていません。
プロパティが新しい方法で宣言されているが、初期化がコンストラクターの本体に残っている場合、PhpStormはそれを削除することを提案します。
マッチ式
新しい式は似て
switch
いますが、厳密な比較を使用しており、変数に割り当てたり、返すことができます。
PhpStormは、ブロックを
switch
に書き換えることができるかどうかを検出 し
match
、Alt + Enterキーを押すと、クイックフィックスで自動的に
それを行います。新しい式の誤った使用を確認するのは難しい場合があるため、PhpStormはすべてのエラーを強調表示します。
重複する値が条件に見つかります:
1つのブランチとデフォルトのブランチを持つ 一致式は、安全に3値式に置き換えることができます。
また、デフォルトのブランチのみが残っている場合、一致はまったく必要ありません。
最後に、ボディが異なるブランチで同じである場合、それらをマージできます。
Nullsafe演算子
nullをチェックする一連の条件の代わりに、新しい演算子を使用して一連の呼び出しを使用できるようになりました
?->
。
PhpStormは、演算子の正しい使用法をチェックします。
ハンギングコンマ
関数を呼び出すとき、およびクロージャーリストで、最後の引数の後にコンマを追加できるようになりました
use
。
捕獲しない漁獲量
PHP 8では、変数なしでcatchブロックで例外をキャッチできます。
式を投げる
例外は、矢印関数と短い演算子
??
、および3値 でスローできるようになりました
? :
。
省略形
thr
を使用してタブを押すことができ ます-これは ライブテンプレートです。
定数::オブジェクトのクラス
以前は、オブジェクトのFQNを取得するには、関数を使用する必要がありました
get_class()
。PHP 8では、呼び出し
get_class($object)
を安全にに置き換えることができます
$object::class
。
実際には、Alt + Enterを押すことで、このような置換を行うことができます。
::class
PhpStorm定数の誤った使用が強調表示され ます。
文字列の新しい関数:str_contains()、str_starts_with()、str_ends_with()
文字列に特定の単語が含まれているかどうかを確認するにはどうすればよいですか?StackOverflowで最もよく見られるPHPの質問です。PHP 8には、この質問に対する明確な答えがあります
str_contains()
。関数を使用します 。
PhpStorm 2020.3すべての呼び出し
strpos()
に置き換えることができます
str_contains()
。
そこも新しいもの
str_starts_with()
、と
str_ends_with()
決定するために開始または終了ラインの特定の部分文字列かどうか。PhpStormは、呼び出し
substr()
を新しい代替手段に置き換えることができる場所を強調しています 。
再分類されたエンジン警告
PHP 8では、スローされる警告のタイプが多くのエラーに対して修正されました。つまり、多くの場合、通知の代わりに、例外またはタイプエラーが発生します。
PhpStormでは、このため、一部の検査には2つの異なる重大度レベルがあります。PHP8用と古いバージョン用です。
これらはすべて、PHP 8で最も注目に値するものです。PHP8にアップグレードすると、小さな変更がたくさん表示されます。
PsalmとPHPStanのサポート
PhpStorm 2020.3では、両方の静的アナライザーを使用して、エディターで直接問題を強調表示できます。
PHPStanまたはPsalmが依存関係として追加されている場合
composer.json
、それらの横にツールの設定を開くレンチアイコンが表示され ます。
そこから、検査設定に移動し、エディターで強調表示をオンにすることができます。これは、PHPで適切な検査を選択することによって行われ ます。品質ツールで 設定/プリファレンス|編集者|検査。
️同時に両方ではなく、一方の機器のみをオンにすることをお勧めします。
ここでは、構成ファイルへのパスを指定し、コマンドライン引数を構成することもできます。
️PHPStanは構成ファイルがなくても機能しますが、Psalmはそれを必要とします。ルートディレクトリに
psalm.xml
または が存在する場合
phpstan.neon
、PhpStormはそれらを自動的にプルアップします。
すべての設定が完了したら、任意のファイルを開くと、静的アナライザーからのハイライトが表示されます。バックライトが表示されるまでに少し時間がかかる場合があります。
注釈
すべての詩篇の注釈が
@psalm-*
エディターで正しく強調表示されるようになりました。ただし、一般的に、
@psalm-
タグからプレフィックス、つまり
@psalm-return
->
@return
および
@psalm-param
-> を安全に削除できるように なりました
@param
。
タイプサポート
一部のPsalmタイプのサポートを追加し、タグからの情報に基づいて、タイプの推測を改善しました。これにより、チェック、コード生成、および自動完了がより正確になりました。
疑似タイプ
スカラー、数値などのpsalm疑似タイプをサポートします。
タイプの
定数定数結合と
*
タグによる指定をサポートし ます。 パラメータ そして var..。
配列のタイプヒント ネストされたものを含め、配列の
説明
array<array-key, Type>
もサポートされています。
Genericsと@tempateGenericの
サポートは、完全に正しい仕様と多くのエッジケースを持たない上級ユーザー向けの機能です。ただし、
@template
これがどのように使用されるかを確認するために、Psalm構文に基づいて基本的なサポートを実装することにし ました。
これまでのところ、関数がそのパラメーターの1つを返す場合、最も原始的なケースのみがサポートされます。
, . , . , .
Xdebug 3
人気のあるPHPデバッガーが更新され、構成がはるかに高速で簡単になりました。Xdebug 3の詳細については、アップグレードガイドをご覧 ください。
Xdebug 3を構成するには、1つのxdebug.modeオプションで十分です (このように
XDEBUG_MODE=debug
)。
また、デフォルトのXdebugポートが変更されました:
9000
今では なく
9003
。移行を簡素化するために、PhpStormはデフォルトで両方のポートでリッスンします。Xdebugのポート設定およびその他のオプションは、 [設定] / [設定] | [設定]にあります。言語とフレームワーク| PHP | デバッグ。
デバッガーの改善
PhpStormのデバッグ機能は、2つの新機能で拡張されました。
インタラクティブなヒント
デバッグモードで、変数の出力を展開してすべてのフィールドを表示できるようになりました。その場で値を変更することもできます。
インラインウォッチ
以前のバージョンでは、ウォッチリストに変数または式を追加して、値の変化を段階的に監視できました。
PhpStorm 2020.3では、コンテキストに時計を直接追加でき、コードの横に表示されます。 ヒントのポップアップで
[インラインウォッチとして追加]をクリックし ます。
または、エディターのコンテキストメニューで[インラインウォッチの追加]をクリックし ます。
または、変数を選択して、コンテキストメニューから[インラインウォッチの追加]を選択します 。
Twigで変数を強調表示して名前を変更する
変数を選択するか、変数にカーソルを置くと、テンプレートでのすべての使用が強調表示されます。また、すべてのオカレンスの名前を変更するには、Shift + F6を押します。
共同開発-CodeWith Me
PhpStorm 2020.3には、Code With Meプラグイン、JetBrainsの新しい共同開発およびペアプログラミングツールが付属してい ます。これを使用すると、開いているプロジェクトを他のユーザーと共有して、リアルタイムで一緒に作業できます。これらの投稿でCodeWithMeの詳細をご覧ください 。
HTTPクライアント
PhpStormでのGuzzleとHTTPクライアントの統合
Guzzleは、PHPで最も人気のあるHTTPクライアントの1つです。コードのどこかにHTTP要求があり、コード自体を実行せずにそれをテストしたいとします。以前は、すべてのパラメーターを手動でコピーする必要がありました。
PhpStorm 2020.3を使用すると、単純なGuzzleリクエストを.httpファイルに変換できます。リクエストがサポートされている場合は、その横にアイコンが表示されます。それをクリックすると、正しいURL、リクエストパラメータ、メソッド、ヘッダー、本文を含む新しいスクラッチファイルが開きます。
これで、エディターからクエリを実行していじり、プロジェクトにhttpファイルとして保存できます。
ビデオレビュー でHTTPクライアントの詳細をご覧ください 。
HTTPリクエストをcURLにコピーします
HTTP要求をcURL文字列にエクスポートするには、エディターで要求に対してAlt + Enterを押し、[ cURLに変換]を選択 してクリップボードにコピーします。これで、端末、ドキュメント、または任意のAPIテストツールに挿入できます。
編集者
マークダウンの改善
マークダウンファイルでMermaid.js構文を使用して、チャートやグラフを記述することができます 。PhpStormは、エディターで直接プレビューをレンダリングできるようになりました。環境設定/設定に含まれる | 言語とフレームワーク| マークダウン。
また、一般的なスタイルに従って.mdファイルの内容を再フォーマットすることも可能になりました。⌘⌥L/ Ctrl + Alt + Lを押して完了します。 環境設定/設定で
構成可能 | 編集者| コードスタイル| マークダウン。
最後に、エディターの右上隅にある[自動スクロールプレビュー]ボタンをクリックする と、プレビューとテキストのスクロールが同期されます。
スペルチェックと文法チェックの改善
タイプミスと文法の問題をはるかに速く修正できるようになりました。
- まず、エラーの説明がポップアップウィンドウに表示されます。
- また、強調表示されたテキストでAlt + Enterキーを押すと、置換オプションが上部に表示され、以前のようにサブアイテムに非表示になりません。
ドラッグアンドドロップでエディターを分割
複数のファイルを並べて開くには、タブを画面の目的のコーナーにドラッグするだけです。
分割モードでファイルを開く別の方法があります-Shift + Enter。
組み合わせは、プロジェクトビューまたはファイル検索結果で選択したファイルをクリックできます 。
プレビュータブ
ファイルをすばやく表示する必要がある場合は、各ファイルを個別のタブで開く必要はありません。新しい[プレビュー]タブを使用でき ます。
これを有効にするには、プロジェクトビューで歯車をクリックし、[ プレビュー]タブを 有効にして[シングルクリックでファイルを開く]を選択 します。 プロジェクトビューの スペースバーを開かずに押してファイルを表示
することも できます 。
IDE
どこでも検索できるようになりました
結果は関連性ごとにグループ化されてい
ます
できます。Git履歴で検索できます。
明るいテーマまたは暗いテーマへの自動切り替え
では 環境設定/設定| 外観と動作| 外観| テーマは[ OSと同期]を選択 します。
macOS用の新しいホットキーのセット
macOSの代替キーボードショートカットレイアウトは、ファンクションキーの使用を最小限に抑えるため、基本的なアクションを実行するときにキーボード全体に手を伸ばす必要はありません。たとえば、Fn + Shift + F6の代わりに、名前変更リファクタリングは⌥+⌘+ Rを使用します。
macOSホットキーのアイコンの代わりに単語
⌘のようなアイコンの代わりに、Alt、Cmdなどの単語を表示することが
できます。ide.macos.disable.native.shortcut.symbolsオプションによって[レジストリ]セクションで有効になります 。レジストリにアクセスするには、 Find Action Cmd + Shift + Aを使用して、そこにレジストリを書き込み ます。
さまざまなファイルのデフォルトアプリケーションとしてPhpStormを設定します
設定| [設定] / [エディター] / [ファイルタイプ]をクリックして、[ファイルタイプをPhpStormに関連付ける… ]をクリックします 。ダイアログボックスで、ファイル拡張子を選択すると、PhpStormで開きます。
macOSでは再起動が必要です。
テンプレートは複数のファイルを生成できます
モジュールのスケルトンやコンボコントローラービューなど、複数のファイルを同時に生成できます。
では 環境設定/設定| 編集者| [ ファイルとコードテンプレート
、[ファイル名]フィールドで使用できます 。 Symfonyでコントローラーとテンプレートを生成する方法の例を次に示します。
${NAME}
Gitステージのサポート
[設定] / [設定] | [ステージング領域を有効にする]チェックボックスを オンにすることで有効にできます 。バージョンコントロール| Git。 コミット
ツールウィンドウ (Cmd + 0 / Alt + 0)に、ステージングされたファイルとステージングされていないファイルの2つのグループが表示されます。 ステージングされたファイルにファイルを追加するには、その横にある+をクリックします。 または、特定の行を選択して、エディターのアイコンで追加することもでき ます。この場合、ファイルからいくつかの変更をコミットして、残りの作業を続行できます。
DBツール
PhpStormは、DataGripがでてます ボックスで覆われている、 DataGrip 2020.3リリースの概要当社の同僚から。
MongoDBのSQL
これで、MongoDBに対してSQLクエリを使用できます。PhpStorm 2020.3サポートの
SELECT-
クエリは
JOIN
、
WHERE
、
GROUP BY
、
HAVING
、
ORDER BY
、
LIMIT
、
OFFSET
のすべての機能 MongoDBは 離れて、マップ減らし、フィルタ、およびてみましょう。詳細については、ブログ投稿をご覧ください 。
ウェブ
いつものように、PhpStormにはWebStorm2020.3からのすべての更新が含まれ ています。最も注目すべきは、TailwindCSSのサポートです。
テールウィンドCSS
PhpStormは、HTMLファイル内および@applyディレクティブの後のTailwindクラスを補完します。また、疑似クラスの完了も提供します。
HTMLファイルとCSSファイルのクラスにカーソルを合わせると、結果のCSSのプレビューが表示されます。プレビューは、F1 / Ctrl + Qドキュメントポップアップウィンドウのコード完了時にも利用できます。
PhpStormは、tailwind.config.jsからのカスタマイズをサポートしています。たとえば、新しい色でテーマを定義すると、ポップアップの自動完了ウィンドウに、カスタム色の名前でクラスが作成されます。
PhpStorm 2020.3は、「新着情報」ページからダウンロードできます 。
そして、これがリリースの主な機能を示すビデオ(英語)です:
それがすべての時間です。コメントに質問、願い、バグレポート、そしてただの考えをいただければ幸いです。