PHPStormの便利機能

PHPStormでよく使う設定・ショートカットキーをまとめました。

# 目次

[1. Xdebug](#xdebug)
[2. DBクライアント](#dbクライアント)
[3. Git](#git)
[4. ショートカットキー](#ショートカットキー)
[参考](#参考)




# 1.Xdebug

設定することで、ステップ実行ができるようになります。
デバッグ時に役立ちます。

## 準備

今回はDocker環境でXdebugを有効にする手順を記しています。
開発環境によって設定の方法が異なります（ [参考1](https://www.jetbrains.com/help/phpstorm/configuring-xdebug.html#integrationWithProduct) ）

### ①インストール
まずはXdebugをインストールするために、Dockerfileに以下を記述

```dockerfile
RUN pecl install xdebug \
   && docker-php-ext-enable xdebug
```

※以下のようなエラーが出た場合、Xdebugバージョンをバージョンを指定してからインストール（[参考2](https://xdebug.org/docs/compat)）

```
Check for supported PHP versions... configure: error: not supported. Need a PHP version >= 〇.〇.〇 and < 〇.〇.〇 (found 〇.〇.〇)
```

### ②設定ファイルに記述

次にXdebugを有効にするためにphp.iniに以下を記述。

```php.ini
xdebug.remote_enable=1
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.idekey="PHPSTORM"
xdebug.client_host=host.docker.internal
xdebug.client_port=9000
```

それぞれの設定の意味は以下。

|設定項目|意味|
|:---|:---|
|xdebug.remote_enable|xdebugの有効設定（初期値は0で無効になっている）|
|xdebug.mode|ステップ実行や変数の確認を行えるようにする設定|
|xdebug.start_with_request|PHPのコードが実行される前にデバッグを実行|
|xdebug.idekey|xdebugの識別キー（任意の値でOK）|
|xdebug.client_host|PHPStormが起動しているホスト名（`host.docker.internal` を設定することでmacOSへアクセスできるようIPを自動で設定してくれます）|
|xdebug.client_port|Xdebugがデバッグ接続を試みる際のport番号|

他にも様々な設定を行うことができます（[参考3](https://xdebug.org/docs/all_settings#start_with_request)）

### ③PhpStorm側の設定

1. デバッグの設定画面
    * phpStorm > Preferences > Languages & Frameworks > PHP > Debug でデバッグの設定画面を表示。
    * Xdebugの「Debug port」を他のポート番号と被らないように設定。
2. サーバーの設定画面
    * phpStorm > Preferences > Languages & Frameworks > PHP > Server でサーバーの設定画面を表示。
        * Name（任意の値）
        * Host（任意の値）
        * Port（デバッグの設定画面の「Debug port」の値と同じ）
        * Debugger：Xdebugを設定
    * Use path mappingsにチェックを入れ、`docker-compose.yml`のvolumesでマウントさせた値を設定する
3. リモートデバッグの設定
    * Run > Edit Configurationsでを表示し、PHP Remote Debugで「+」をクリック
        * Name（任意の値）
        * Server（サーバーの設定画面の「Name」の値と同じ）
        * IDE key（`php.ini`の「xdebug.idekey」の値と同じ）を設定

## 使用方法

1. 右上の「Debug ○○（リモートデバッグの設定の「Name」の値と同じ）」をクリック
    * 虫のマーク、緑色の点が表示されるとデバッグモードONになっている
2. デバッグしたい処理の任意のコードにブレイクポイントを設定
    * デバッグしたい行の行数とコードの間をクリック
    * 赤色の点が表示されるとブレイクポイントが設定されている
3. アプリケーションを動かし、そのコードが実行されるとプログラムが中断される
4. 中断後の操作は以下
    * Return ○○（リモートデバッグの設定の「Name」の値と同じ）：処理の再開（Command + R）
    * Resume Program：次のブレークポイントまで処理を進める（Option + Command + R）
    * Step Over：1行処理を進める（F8）
    * Step Into：中断している行のメソッド内に入る（F7）
    * Force Step Into：サードパーティのメソッドであっても、中断している行のメソッド内に入る（Option + Shift + F7）
    * Step Out：現在中断しているメソッドから抜け、呼び出し元のメソッドへ戻る（F8）

# DBクライアント
PHPStorm側で設定しておくことで、phpMyAdminなどを設定せずに、直接DBの確認・操作を行うことができます。

## 設定方法

1. View > Tool Windows > DatabaseでIDE右横に「Database」ボタンが表示されるので押下
2. 「New > Data Source」で使用しているDBを押下すると設定画面が表示
    * Name　(任意の値)
    * Host　(DBコンテナのIPアドレス)
    * User　(Mysqlにログインできるユーザー)
    * Password　(Mysqlにログインできるユーザーのパスワード)
3. 「Test Connection」を押下して、緑色のチェックが出れば設定完了

## 使用方法

* テーブルの中身を確認・編集
    * 「Database」タブからDB・テーブルを選択し、内容を確認できる
    * 任意のフィールドをダブルクリックして編集することで、フィールドの値を書き換えることも可能
* SQLの実行
    * consoleにSQLを入力して、直接SQLを実行することも可能

# Git

## 設定方法

1. phpStorm > Preferences > Version Controll > Git でGitの設定画面に移動
    * Path to Git executable（GitのPath）
2. 「Test」を押下して、パスの下にGitのバージョンが表示されれば設定完了

## 使用方法

* ブランチの操作
    * 右下のブランチのマークを押下（現在選択しているブランチ名が記述されている）すると、ブランチ一覧が表示される（git branch）
        * New branch（git checkout -b 〇〇）
        * Checkout（git checkout 〇〇）
        * Rename（git branch -m 〇〇）
        * Merge into Current（git merge △△ 〇〇）
        * Delete（git branch -d 〇〇 / git push origin --delete △△）
* ブランチの更新
    * ステージングエリアにファイルを追加（git add）
        1. 左の「Commit」をクリックすると、ローカルで変更したファイル一覧が表示される
        2. pushしたいファイルをクリックする
    * コミット
        1. 「Commit Message」にメッセージを入力
        2. 「Commit」ボタンをクリック（git commit -m "〇〇"）
        * ※「Amend」にチェックを入れることで、直前のコミットを変更することができる（git commit --amend）
    * プッシュ
        * 右上の右上矢印（緑色）のボタンをクリック
        * 「push」ボタンをクリック（git push 〇〇）
    * 最新化
        * 右上の右下矢印（青色）のボタンをクリック
        * 「Merge incoming changes into the current branch」を選択すると、マージコミットが作成されて最新化
        * 「Rebase the current branch on top of the incoming changes」を選択すると、マージコミットは作成されず最新化
* ブランチの確認
    * ログ
        * 左下の「Git」をクリック（git log）
    * 差分確認
        1. 下側の中央で比較したい履歴を選択
        2. 下側の右に差分のあるファイルが表示されるので、確認したいファイルをダブルクリックすると差分が表示される（git diff 〇〇）
        * ※他のブランチとの差分を確認したい場合は、確認したいブランチで右クリック→「Compare with Current」で確認できる

# ショートカットキー

|分類|設定項目|説明|
|:---|:---|:---|
|検索|Command + Shift + F|プロジェクト内の検索・置換|
|検索|Shift * 2|ファイル名検索|
|検索|Command + F|ファイル内の検索・置換|
|編集|Command + /|コメント・コメント解除|
|編集|Option + ↑|単語選択→囲み選択→行選択→ブロック選択|
|編集|Option + ↓|Option + ↑の選択解除|
|編集|Command + d|行の複製|
|編集|Command + Shift + ↑(or↓)|選択行の移動|
|編集|Shift + Enter|新しい行の追加（末尾にいなくてもOK）|
|編集|Command + Shift + u|大文字・小文字の切り替え|
|編集|Command + p|引数のドキュメントを表示|
|ナビ|Command + b / Command + Click|クラス、変数、メソッドの定義元にジャンプ|
|ナビ|Command + e|最近使用したファイルを表示|
|ナビ|Command + Option + ←|前のカーソル位置に移動|
|ナビ|Command + Option + →|次のカーソル位置に移動|
|ナビ|Command + Option + [|カーソルのブロックの先頭に移動|
|ナビ|Command + Option + ]|カーソルのブロックの末尾に移動|

※ショートカットキーの一覧（[参考4](https://pleiades.io/sites/willbrains.jp/keymap/pdf/shortcut_phpstorm_mac.pdf)）


# 参考

* https://www.jetbrains.com/help/phpstorm/configuring-xdebug.html#integrationWithProduct
* https://xdebug.org/docs/compat
* https://xdebug.org/docs/all_settings#start_with_request
* https://pleiades.io/sites/willbrains.jp/keymap/pdf/shortcut_phpstorm_mac.pdf