PhpStormのtipsまとめ

本記事は、[エキサイトホールディングス Advent Calendar 2024](https://qiita.com/advent-calendar/2024/excite-hd) シリーズ2の13日目の記事です。
内容はタイトル通りです。
- PhpStormのtipsとしていますが、恐らくIntelliJ IDEA等でも概ね使えるかと思います
- キーはMacのもので紹介しますので、Windowsの場合は適宜読み替えてください
- PhpStormのバージョン：
    - PhpStorm 2024.3
    - Build #PS-243.21565.202

また、以降のスクリーンショット内では、一部を除き[laravel-test-examples](https://github.com/framgia/laravel-test-examples)のコードを使わせていただきました。

## 機能
### ファイル間の差分を確認
- ファイルを1つ選択してから、cmdキーを押しながら2つ目のファイルを選択し、その状態で右クリック→「ファイルを比較」で、両ファイル間の差分を確認できます
    ![スクリーンショット 2024-12-17 19.09.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/5c2cfcf1-a180-2fb1-8df9-c341406a92f7.png)
    ![スクリーンショット 2024-12-17 19.15.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/88c86487-36e8-9f4f-ab1a-aa6de3934bc5.png)
- タブに表示されているファイルが1つだけなら、比較したいファイルを右クリック→「エディターでファイルを比較」でも差分を確認できます
    ![スクリーンショット 2024-12-17 19.19.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/1ffac5c4-ff40-027e-6429-572695e7ecc7.png)

### 「ローカル履歴」（Local History）
- エディタ上を右クリック→「ローカル履歴」→「履歴の表示…」で、そのファイルの過去の状態を閲覧・復元できます
    ![スクリーンショット 2024-12-18 18.40.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/9da48a4d-9cbd-9c25-10d1-c84e31b18adc.png)
    ![スクリーンショット 2024-12-18 18.43.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/c0d37829-7fbc-8c8a-e33d-0be200ffe837.png)
- 公式ドキュメント：[ローカル履歴 _ PhpStorm ドキュメント](https://pleiades.io/help/phpstorm/local-history.html)
    - ドキュメントにもありますが、Git等のバーション管理システムの代わりになるものではなく、あくまでそれらを補助する機能です

### 「最近使用したファイル」（Recent Files）
- 上部のメニュー→「表示」→「最近使用したファイル」から、最近開いたファイル等にアクセスできます
    ![スクリーンショット 2024-12-18 18.47.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/a9b1f250-c671-2cf7-7f5f-9efcc65e606a.png)
    ![スクリーンショット 2024-12-18 18.49.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/ffd7ca30-0c08-b548-6dba-00a40e0f617c.png)
- 特に入力欄は表示されませんが、そのまま入力すると検索も可能です
    ![スクリーンショット 2024-12-18 18.53.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/1028a787-911b-0471-0a8a-49f51f60b93c.png)
- 履歴の件数はデフォルトでは50件ですが、設定の「詳細設定」→「最近のファイルの最大数」から変更できます
    ![スクリーンショット 2024-12-18 18.52.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/3c5d922f-340c-7480-5a90-a4a64593841f.png)

## 設定
### addとcommitを分ける
- デフォルトではPhpStormからGitを操作する際にaddとcommitを分けることができませんが、設定の「バージョン管理」→「Git」→「ステージングエリアを有効化」をオンにすると分けることが可能です
    ![スクリーンショット 2024-12-18 19.01.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/4ac153f5-f8ba-c406-5a20-0cb6d0ecd4c6.png)
- オンにした状態では、「コミット」ウィンドウで「＋」ボタンをクリックすること等によりaddすることができます
    ![スクリーンショット 2024-12-18 19.02.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/428c192e-251b-2075-4d05-87568a3f8b81.png)

### 選択した文字列をハイライト
- デフォルトではカーソルが置かれた部分と構文的に同じである箇所（変数など）がハイライトされますが、設定の「エディター」→「一般」→「外観」→「選択したテキストの出現箇所をハイライトする」をオンにすると、単純に文字列として一致している箇所のハイライトに切り替えが可能です
    ![スクリーンショット 2024-12-18 19.05.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/8c17eb91-b894-0f41-374d-195c726eed8b.png)
    ![スクリーンショット 2024-12-18 19.16.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/6d32a5f3-3bce-1244-497e-e2048646b015.png)
- ハイライトの色は、「エディター」→「カラースキームの切り替え」→「一般」から設定できます

## その他
### トラブル時にキャッシュを作り直す
- 定義されているクラスなのに未定義クラスと認識されてしまう等、PhpStormの使用中にトラブルが起きた場合、キャッシュを作り直すと解決することがあります
- 手順は次の通りです：上部のメニュー→「ファイル」→「キャッシュの破棄…」
    ![スクリーンショット 2024-12-20 16.26.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/f86553ae-e034-e5f3-743d-893dd0977da3.png)
    ![スクリーンショット 2024-12-20 16.31.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/5a283b46-f898-71c8-a493-bfa27fe4675f.png)

### Xdebug によるプロファイル結果を閲覧
- ステップ実行などに使われるXdebugですが、パフォーマンスチューニングを行う際に必要となる、各関数の実行時間等のプロファイルを取ることも可能です
    - 公式ドキュメント：[Xdebug_ Documentation » Profiling](https://xdebug.org/docs/profiler)
    - プロファイルを用いたパフォーマンスチューニングについては、次の資料等が参考になります：[PHPWebアプリケーションパフォーマンスチューニングの勘所〜なぜアプリケーションは速くなるのか〜 _ Why PHP Applications are Faster - Speaker Deck](https://speakerdeck.com/seike460/why-php-applications-are-faster?slide=31)
- 取得したプロファイルはそのままだと読みにくいのですが、PhpStormを使用すると読みやすく表示することができます。詳細は以下のドキュメントをご覧ください
    ![スクリーンショット 2024-12-23 12.00.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987065/f48f3cc2-dfe2-eb37-0ce4-caa0b9d7de73.png)
    - 公式ドキュメント：[Xdebug によるプロファイリング _ PhpStorm ドキュメント](https://pleiades.io/help/phpstorm/profiling-with-xdebug.html)

### マクロ
- PhpStormにはマクロ機能があり、キー操作等を記録・再生が可能です
- 決まったキー操作を何回も繰り返す必要がある時などにとても便利なので、以下のドキュメントを参考に使ってみてください
    - 公式ドキュメント：[マクロ _ PhpStorm ドキュメント](https://pleiades.io/help/phpstorm/using-macros-in-the-editor.html)

### 公式プラグイン
- 以下から、JetBrainsが作成しているプラグインの一覧を見ることができます。[Mojo言語](https://ja.wikipedia.org/wiki/Mojo)の[プラグイン](https://plugins.jetbrains.com/plugin/23371-mojo)もあったりして、1回覗いてみると面白いと思います
    - [JetBrains s.r.o. - Vendor _ JetBrains Marketplace](https://plugins.jetbrains.com/vendor/JetBrains)
- 自分はLaravelを使っているので、[.​env files support](https://plugins.jetbrains.com/plugin/9525--env-files-support)をインストールしています


以上です。読んでくださり、ありがとうございました。