1. 記事一覧 >
  2. ブログ記事
VSCode
category logo

VSCodeインストールからPHP CS Fixerをインストールして整形

(更新) (公開)

はじめに

VS Code の拡張機能に、「PHP CS Fixer」という拡張機能があります。この拡張機能を利用すると、PHP のソースコードを PSR2 に準拠した形でフォーマットすることができます。
今回、VS Code をインストールするところから導入手順を紹介してきたいと思います。
既に動いている環境があるので、サクっと書こうと思ったのですが、思っていたよりハマりましたので、ハマりポイントも紹介していきます。

PHP CS Fixer フォーマット動画gif


【 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をダウンロードして、インストールします。

VS Code ダウンロード


VS Code インストール実行


...インストール先等全て標準で、手順というほどの事は無いため、途中経過は、省略します。以下のチェックボックスの画面だけ、説明します。(おのおののチェック有り無しは任意ですが、この記事の検証時は、全てチェックを入れて進めました。)

VS Code インストール チェックボックス


デスクトップ上にアイコンを作成する
そのままの意味です。


エクスプローラーのファイルコンテキストメニューに[Code で開く]アクションを追加する
以下のようにファイルの右クリックメニューに"Code で開く"が追加されます。
これにより、関連付けられていないファイルでも手間なく VS Code で開けます。 ファイル Code で開く


エクスプローラーのディレクトリコンテキストメニューに[Code で開く]アクションを追加する
以下のようにフォルダの右クリックメニューに"Code で開く"が追加されます。
これにより、フォルダツリー付きで開くことができます。
フォルダ Code で開く


フォルダ Code で開く フォルダツリー付きで開く


サポートされているファイルの種類のエディターとして、Codeを登録する
.c++.java.phpなどの拡張子が VS Code に関連付けられます。
ちなみに、Chrome、Firefox くらいしかインストールされていない環境では、関連付けられた拡張子は、かなり多く、以下でした。
(テキストにすると、Google 様がお怒りになりそうなので、画像です。)
サポートされているファイルの種類のエディターとして、Codeを登録する ※設定の「既定のアプリ」→「ファイルの種類ごとに既定のアプリを選ぶ」で目視して書き出しました。レジストリとか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 どちらでも構いません。

Windows版phpダウンロード

2021/12/19 時点では、php-7.4.26-nts-Win32-vc15-x64.zip がダウンロードされました。


ダウンロードしたら、C:\phpに展開します。展開先はどこでも良いです。今回、php.exe の位置は、C:\php\php.exe になります。 php展開


php -v
VCRUNTIME140.dllが見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。
のエラーになる場合、Visual C++ 再頒布可能パッケージ(vc_redist.x64.exe)のインストールが必要です。→ダウンロード先リンク

VCRUNTIME140.dllが見つからないアラート


VCRUNTIME140.dllランタイムダウンロード

最初、これに気付かずにそのまま進めて、PHP CS Fixer が動かず、以下のエラーになりました。
[exthost] [error] undefined
[exthost] [error] [junstyle.php-cs-fixer] provider FAILED


表示 → 出力(CTRL+Shift+U)→ ログ(拡張機能ホスト)
表示 → 出力(CTRL+Shift+D)→ ログ(拡張機能ホスト)


ログ(拡張機能ホスト)の表示


また、今回は関係無いですが、既に 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」クリック
F1 → 「Developer: Toggle Developer Tools」


「Console」クリック


PHP CS Fixer 拡張機能追加

VS Code を起動して、拡張機能のアイコンをクリックして、「php cs fixer」と検索欄に入力します。
junstyle のphp cs fixer v0.2.10をインストールします。

似たものがありますが、ここでインストールするのは、junstyle です。

PHP CS Fixer 拡張機能追加


保存時フォーマット設定を追加

拡張子が.php の場合、フォーマッタとして、PHP CS Fixer が使われるようにします。また、保存時にフォーマットされるように設定します。

設定は、以下の概念により、設定場所によって、優先順位が異なります。今回、ユーザーごとの設定を書き換えています。

設定場所によって、優先順位が異なります

設定アイコン →「コマンド パレット」をクリックするか、Ctrl+Shift+P でコマンドパレットを開きます。
「Preferences: Configure Language Specific Settings」を入力します。
Preferences: Configure Language Specific Settings


PHP をクリックします。
PHP をクリック


settings.json の編集画面になります。

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表示アイコンクリックで表示できます。

json表示アイコンクリック

フォーマット確認

フォーマットが動作するかテストします。
右クリックメニューの「Code で開く」で、適当な php を単体で起動します。

右クリックメニューの「Code で開く」


制限モードは、安全なコード参照のためのものです。すべての機能を有効にするには、このウィンドウを信頼します。
と表示される場合、「管理」をクリックして、「信頼する」をクリックします。

制限モード 「管理」をクリック


制限モード 「信頼する」をクリック

信頼しない場合、制限モードになり、拡張機能が有効にならず、フォーマットされません。他、ソースコードに syntax エラーがある場合、フォーマットされません。


CTRL+S で以下のようにフォーマットされたら成功です。

PHP CS Fixer フォーマット 成功


ヨシ!


独自整形ルール調整

整形ルールは、細かく調整することもできます。
調整できるルールは、いろいろあるのですが、今回、インデントのスペース4つをスペース2つに修正してみます。


ファイル名.php-cs-fixer.phpで、以下の内容のファイルを作成します。

<?php

return (new PhpCsFixer\Config())
    ->setIndent("  ")
;

これをワークスペースのルートか、.vscode フォルダに置きます。
今回は、1つの php を直接開いてテストするため、同じフォルダに置きます。

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 で保存します。

右クリックメニューの「Code で開く」2


PHP CS Fixer フォーマット スペース2つ


ヨシ!

loading...