- 記事一覧 >
- ブログ記事
VSCodeインストールからPHP CS Fixerをインストールして整形
はじめに
VS Code の拡張機能に、「PHP CS Fixer」という拡張機能があります。この拡張機能を利用すると、PHP のソースコードを PSR2 に準拠した形でフォーマットすることができます。
今回、VS Code をインストールするところから導入手順を紹介してきたいと思います。
既に動いている環境があるので、サクっと書こうと思ったのですが、思っていたよりハマりましたので、ハマりポイントも紹介していきます。
【 PSR2 】
PHPのコーディング規約の1つです。デフォルトがPSR2ですが、設定で他の規約に変えられます。
【検証環境】
Windows 10 Pro 20H2(x64)
Visual Studio Code 1.63.2
php cs fixer v0.2.10
PHP 7.4.27
VS Code インストール
https://code.visualstudio.com/download
からVSCodeUserSetup.exe
をダウンロードして、インストールします。
...インストール先等全て標準で、手順というほどの事は無いため、途中経過は、省略します。以下のチェックボックスの画面だけ、説明します。(おのおののチェック有り無しは任意ですが、この記事の検証時は、全てチェックを入れて進めました。)
□デスクトップ上にアイコンを作成する
そのままの意味です。
□エクスプローラーのファイルコンテキストメニューに[Code で開く]アクションを追加する
以下のようにファイルの右クリックメニューに"Code で開く"が追加されます。
これにより、関連付けられていないファイルでも手間なく VS Code で開けます。
□エクスプローラーのディレクトリコンテキストメニューに[Code で開く]アクションを追加する
以下のようにフォルダの右クリックメニューに"Code で開く"が追加されます。
これにより、フォルダツリー付きで開くことができます。
□サポートされているファイルの種類のエディターとして、Codeを登録する
.c++
、.java
、.php
などの拡張子が VS Code に関連付けられます。
ちなみに、Chrome、Firefox くらいしかインストールされていない環境では、関連付けられた拡張子は、かなり多く、以下でした。
(テキストにすると、Google 様がお怒りになりそうなので、画像です。)
※設定の「既定のアプリ」→「ファイルの種類ごとに既定のアプリを選ぶ」で目視して書き出しました。レジストリとかassoc
コマンドと一致せず、目視するしかなかったです。
□PATHへの追加(再起動後に使用可能)
ユーザー環境変数にC:\Users\admin\AppData\Local\Programs\Microsoft VS Code\bin
が追加されました。
これにより、cmd.exe でcode
と打ち込むと VS Code が起動します。
php インストール
PHP CS Fixer は、php のプログラムのため、php のインストールは必須です。
https://windows.php.net/download#php-7.4
でダウンロードします。
Apache の CGI 版(FastCGI):Non-Thread Safe
Apache のモジュール版(LoadModule):Thread Safe
の違いがありますが、php を PHP CS Fixer 以外の用途に使う予定はなかったため、何も考えず、一番上のVC15 x64 Non Thread Safe (2021-Dec-14 22:28:02)
の zip をダウンロードしました。PHP CS Fixer にとっては、Thread Safe、Non-Thread Safe どちらでも構いません。
2021/12/19 時点では、
php-7.4.26-nts-Win32-vc15-x64.zip
がダウンロードされました。
ダウンロードしたら、C:\php
に展開します。展開先はどこでも良いです。今回、php.exe の位置は、C:\php\php.exe
になります。
php -v
でVCRUNTIME140.dllが見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。
のエラーになる場合、Visual C++ 再頒布可能パッケージ(vc_redist.x64.exe)のインストールが必要です。→ダウンロード先リンク
最初、これに気付かずにそのまま進めて、PHP CS Fixer が動かず、以下のエラーになりました。[exthost] [error] undefined
[exthost] [error] [junstyle.php-cs-fixer] provider FAILED
表示 → 出力(CTRL+Shift+U)→ ログ(拡張機能ホスト)
また、今回は関係無いですが、既に PHP CS Fixer インストール済みの環境で確認すると、以下のエラーになりました。PHP CS Fixer: php general error.
2021 年 12 月 19 日時点では、PHP 7.2.5 以上から PHP 8.1.*までのバージョンが必要のようです。
Console 抜粋: [Extension Host] PHP needs to be a minimum version of PHP 7.2.5 and maximum version of PHP 8.1.*.Current PHP version: 7.2.2.
F1 → 「Developer: Toggle Developer Tools」と入力 →「Console」クリック
PHP CS Fixer 拡張機能追加
VS Code を起動して、拡張機能のアイコンをクリックして、「php cs fixer」と検索欄に入力します。
junstyle のphp cs fixer v0.2.10
をインストールします。
似たものがありますが、ここでインストールするのは、junstyle です。
保存時フォーマット設定を追加
拡張子が.php の場合、フォーマッタとして、PHP CS Fixer が使われるようにします。また、保存時にフォーマットされるように設定します。
設定は、以下の概念により、設定場所によって、優先順位が異なります。今回、ユーザーごとの設定を書き換えています。
設定アイコン →「コマンド パレット」をクリックするか、Ctrl+Shift+P でコマンドパレットを開きます。
「Preferences: Configure Language Specific Settings」を入力します。
settings.json
の編集画面になります。
以下のような内容とし、保存します。
{
"php-cs-fixer.onsave": true,
"php-cs-fixer.executablePath": "${extensionPath}/php-cs-fixer.phar",
"php.validate.executablePath": "c:\\php\\php.exe",
"[php]": {
"editor.defaultFormatter": "junstyle.php-cs-fixer"
}
}
おのおの以下の意味になります。
{
"php-cs-fixer.onsave": trueにすると保存したときにフォーマット,
"php-cs-fixer.executablePath": フォーマットプログラムの場所,
"php.validate.executablePath": php.exeの場所,
"[php]": {//[php]の中に書くと、拡張子.phpに対してのみ有効な設定になる
"editor.defaultFormatter": デフォルトフォーマッタをjunstyle.php-cs-fixerとする,
}
}
C:\Users\[アカウント名]\AppData\Roaming\Code\User\settings.json
が編集されます。直接他のエディタで編集しても構いません。
VS Codeで
settings.json
タブを再び表示したいときは、設定アイコン→「設定」(CTRL+,)からjson表示アイコンクリックで表示できます。
フォーマット確認
フォーマットが動作するかテストします。
右クリックメニューの「Code で開く」で、適当な php を単体で起動します。
「制限モードは、安全なコード参照のためのものです。すべての機能を有効にするには、このウィンドウを信頼します。
」
と表示される場合、「管理」をクリックして、「信頼する」をクリックします。
信頼しない場合、制限モードになり、拡張機能が有効にならず、フォーマットされません。他、ソースコードに syntax エラーがある場合、フォーマットされません。
CTRL+S で以下のようにフォーマットされたら成功です。
ヨシ!
独自整形ルール調整
整形ルールは、細かく調整することもできます。
調整できるルールは、いろいろあるのですが、今回、インデントのスペース4つをスペース2つに修正してみます。
ファイル名.php-cs-fixer.php
で、以下の内容のファイルを作成します。
<?php
return (new PhpCsFixer\Config())
->setIndent(" ")
;
これをワークスペースのルートか、.vscode フォルダに置きます。
今回は、1つの php を直接開いてテストするため、同じフォルダに置きます。
.php_cs
または、.php_cs.dist
が紹介されている記事がありますが、この記事の手順では、.php-cs-fixer.php
または、.php-cs-fixer.dist.php
が正解になります。
.php_cs
に変更ルールを記述すると、以下のエラーになりました。
Configuration file `.php_cs` is outdated, rename to `.php-cs-fixer.php`.
.php-cs-fixer.php
と.php-cs-fixer.dist.php
では、.php-cs-fixer.php
の方が優先順位が高いです。
settings.jsonに以下の設定を入れると、任意の場所にルール設定ファイルを置けます。
"php-cs-fixer.config": "/full/config/file/path"
テスト用 php を開いて、CTRL+S で保存します。
ヨシ!
その他、宣伝、誹謗中傷等、当方が不適切と判断した書き込みは、理由の如何を問わず、投稿者に断りなく削除します。
書き込み内容について、一切の責任を負いません。
このコメント機能は、予告無く廃止する可能性があります。ご了承ください。
コメントの削除をご依頼の場合はTwitterのDM等でご連絡ください。