💡

Laravel ユーザーご愛用?VsCode の Intelephense Premium(有料版)での rename symbol が便利

2021/05/31に公開

はじめに

vscodeのプラグイン「PHP Intelephense」の話です。(IntelliSense ではありません)
PHP というか、Laravel の開発では何かと使える Intelephense ですが、Premium版に、
「クラス名を変更すると該当するファイル名なども変えてくれる」という機能があります。

昔は無料で使えていたようですが、現在はPremium版(執筆時点で1,200円)での提供になっています。

その機能に惹かれてライセンス購入したのが半年以上も前で、購入したものの説明ページが全く無いので、その恩恵を受けていませんでした。

中には、同じ境遇の人もいたようで、質問を投げているものの回答を得られず…。(というかこの方、Laravel Livewire/ Alpine.js の作成者)

で、ふとした事で、分かりました。F2を押せばいいのでした。対応するプラグインが入っていれば、反応します。右クリックでメニューを開いた場合は、「Rename」ではなく「Rename Symbol」の方。

で、この機能を使うとどんな事ができるかというと、例えば以下のクラスがある時、

class UserLoginController
{

UserLoginController の箇所にカーソルを持ってきて、F2を押すと名前を変えるダイアログが開くので、そこで名前を変えると、実際のファイル名も変わります。
更に嬉しいのが、web.php で以下のように書いてある場合、

use App\Http\Controllers\UserLoginController;

Route::get('mypage/login', [UserLoginController::class, 'index'])->name('login');

これらも一緒に変わってくれます。
(ファイルを開いてなくても、ファイルが自動で開き、変更されます。変更は、未保存の状態ですので、確認後保存すればOKです)
(旧式な書き方 'UserLoginController@index' は流石にダメだと思いますが)

試しにModelのクラス名を変えてみたら、関連する4ファイルでも、該当箇所が変更されました。

ちなみに、「シンボルの名前を変更する際、[Shift]+[Enter]キーを押すとリファクタリングビューが現れ、そのシンボルのリネームにより変更が行われるファイルを一覧できる。」
でした。
参考:窓の杜

また、変数名の変更なんかでも使えます。F2押して変更すると、該当の変数名をまとめて変更してくれました。
(F2の場合、関数Aのhogeという変数名を変えても、関数Bのhogeには影響無し)
(Ctrl+F2の場合、とにかく全部変更)

まとめ

結構いい感じの機能です。
有料の IDE には元々付いている機能でしょうが、vscode でここまでできるのは嬉しい限りです。

作者さんには感謝ですね。
ただ、他の Premium 機能は、どうやって使うのでしょうか?(笑

Discussion