VScodeでPHPのフォーマッター(PHP CS Fixer)導入時の解決策
htmlやjavascriptを書いていたときはPrettierでフォーマットを整えていましたがphpは対応しておらず、php用のフォーマッター探しの際にはまった箇所とその解決方法についてまとめました。
PHP CS Fixerインストールしたけど動かないじゃん!とか、.pharファイルダウンロードしたのに動かねー!って人は仲間です。
1, php-cs-fixer.pharをインストール
拡張機能PHP CS Fixerを使用するためにはphp-cs-fixer.pharが必要になります。
このファイルはあらかじめPHP CS Fixerに備わっているのですが、拡張機能の説明書にパフォーマンスが低いかもしれないとの記載があったため、今回は自分でインストールしたphp-cs-fixer.pharを使用していきます。
インストールの方法はこのサイトにまとめられています。自分はファイルをダウンロードし、PHPファイルが入っているディレクリ内に配置しました。
2, VScodeでPHP CS Fixerをインストール
VScode内でインストールするだけ!
3, VScodeのsettings.jsonにてPHP用のフォーマッターを指定
ここからが詰まりやすいところだと思います。私もここでだいぶ詰まりました。
拡張機能をインストールするとsettings.jsonに"php-cs-fixer.~~~"というような記述が増えていると思います。
しかし、その中にPHP用のフォーマッターを指定する記述がないため、以下の設定を追加します。
"[php]": { "editor.defaultFormatter": "junstyle.php-cs-fixer" }
このコードによってPHPを使用する際のフォーマッターはPHP CS Fixerに設定されます。
また、Prettierをインストールしている方は、同じくsettings.jsonに以下のようなコードがあると思います。
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
Prettierはインストール時に自動的にフォーマッターを指定するよう設定されますが、今回使用した拡張機能PHP CS Fixerにはその機能がないため、自分で記述する必要があったのだと考えられます。
*junstyleやesbenpはフォーマッターの識別子であるとの説明がVScode内で確認できました。
4, php-cs-fixer.pharのパスを指定
次はsettings.jsonファイル内の"php-cs-fixer.executablePath"というプロパティに、1でインストールしたphp-cs-fixer.pharのパスを指定します。
"php-cs-fixer.executablePath": "php-cs-fixer.pharまでのパスを記述"
これでPHPでもフォーマッターが使えるようになりました。
5, セーブ時にもフォーマット機能が動くようにする
先ほどのsettings.jsonに以下の記述を加えることでファイルをセーブ(command + S)した際にもコードを整えてくれるようになります。
"php-cs-fixer.onsave": true
まとめ
①php-cs-fixer.pharのインストール→②拡張機能のインストール→③PHPのフォーマッターの指定→④php-cs-fixer.pharのパスを指定(→⑤セーブ時のフォーマット機能の有効化)
以上の手順を踏むことでPHPでもコードを整えられるようになります。
⑤まで行った後のsettings.jsonは以下のようになっていると思います。
"php-cs-fixer.executablePath": "php-cs-fixer.pharまでのパス",
"php-cs-fixer.onsave": true,
"[php]": { "editor.defaultFormatter": "junstyle.php-cs-fixer" }
ただ、Prettierと比べて物足りなさを感じると思います。
我慢できない人はフォーマットのルールを自分で作成することでより強力なフォーマッターに進化させてみてください。(ここでは割愛させていただきます)