Laravel ユーザーご愛用?VsCode の Intelephense Premium(有料版)での rename symbol が便利
はじめに
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