このツールでできること
PHP フォーマッターは、乱雑なコード、圧縮されたコード、インデントがばらばらなコードを、コミュニティのコーディング規約に沿ったきれいなコードに整えます。型付きプロパティや readonly プロパティ、コンストラクタのプロモーション、アロー関数、enum、match 式、アトリビュートなど、モダンな構文に対応しています。
内部では公式の PHP プラグインを組み込んだ Prettier を実行しています。多くの Laravel や Symfony のチームがエディターや pre-commit フックで使っているのと同じ組み合わせなので、手元のツールと同じ結果が得られます。
使い方
- PHP コードを貼り付けるか、
.phpファイルを開きます。短いスニペットなら先頭の<?phpタグは省略できます。 - 入力に合わせて、整形されたコードが右側に表示されます。
- オプションを調整します。
- インデント:PSR 標準はスペース 4 つです。スペース 2 つとタブも選べます。
- 行の幅:これより長い行は、構文上可能な位置で折り返されます。
- 波括弧:クラスと関数の波括弧を次の行(PER / PSR-12)に置くか、同じ行に置くかを選びます。
- PHP バージョン:コードを動かす必要がある最も古いバージョンです。
- シングルクォート と、複数行リストの 末尾のカンマ。
- 結果をコピーまたはダウンロードします。
コードに構文エラーがある場合は、パーサーが何を期待していたかと、停止した行と列がメッセージに表示されます。
例
サンプルは、すべてが詰め込まれた Laravel 風のコントローラーです。グループ化された use 文、プロパティの配列、コンストラクタのプロモーション、バリデーションの呼び出し、1 行で書かれた if、アロー関数を使った array_map が含まれています。整形すると、各メソッドの波括弧が独立した行に移り、演算子と => の前後にスペースが入り、if の本体が展開され、長い response()->json() の呼び出しは配列の要素 1 つにつき 1 行で、末尾のカンマ付きで折り返されます。
変更しないもの
フォーマッターが変えるのはレイアウトだけです。変数名の変更、use 文の並べ替え、array() から短縮構文への変換、ロジックの修正は行いません。PHPDoc ブロックを含むコメントは保持され、周囲のコードに合わせてインデントし直されます。
ヒント
- プロジェクトの Prettier や PHP-CS-Fixer の設定と同じ行の幅と PHP バージョンを使うと、差分に無駄な変更が出ません。
- ログやスタックトレースからコピーしたスニペットを整形すると、ずっと読みやすくなります。
- Issue でコードを共有するときは、先に整形しておくとレビュアーが内容に集中できます。
よくある質問
› どのコーディングスタイルに従いますか?
既定では、PHP-FIG が公開している PSR-12 の後継、PER Coding Style に従います。クラスとメソッドの波括弧は独立した行に置き、制御構造の波括弧は同じ行に置き、インデントはスペース 4 つです。
› PHP バージョンを指定する意味は?
一部の構文は特定のバージョン以降でしか使えません。たとえば引数リストの末尾のカンマには PHP 8.0 が必要なので、それより古いバージョンを指定するとフォーマッターは末尾のカンマを付けません。コードを動かす必要がある最も古いバージョンを選んでください。
› HTML と PHP が混在したファイルも整形できますか?
はい。インライン HTML や短縮 echo タグを含むテンプレートファイルにも対応しています。PHP の部分は整形され、その間の HTML はそのまま残ります。
› コードはアップロードされますか?
いいえ。フォーマッターは完全にブラウザ内で動作し、サーバーには何も送信されません。