這個工具能做什麼
PHP 格式化工具能把雜亂、壓縮過或縮排不一致的 PHP 整理成遵循社群編碼標準的乾淨程式碼。它支援現代語法,包括具型別和 readonly 屬性、建構子屬性提升、箭頭函式、列舉、match 運算式和屬性標註(attributes)。
它執行的是 Prettier 搭配官方 PHP 外掛,這也是許多 Laravel 和 Symfony 團隊在編輯器與 pre-commit hook 中使用的組合,因此結果會和你的工具鏈產出的一致。
使用方式
- 貼上 PHP 程式碼,或開啟
.php檔案。簡短的程式片段可以省略開頭的<?php標籤。 - 格式化後的程式碼會隨著輸入即時顯示在右側。
- 調整選項:
- 縮排:4 個空格是 PSR 標準;也可以選 2 個空格或 Tab。
- 每行寬度:超過這個長度的行,會在語法允許的地方換行。
- 大括號位置:類別和函式的大括號放在下一行(PER / PSR-12)或同一行。
- PHP 版本:程式碼必須支援的最舊版本。
- 使用單引號,以及多行清單的 多行時加尾隨逗號。
- 複製或下載結果。
如果程式碼有語法錯誤,訊息會指出剖析器預期的內容,以及它停下來的行號和欄號。
範例
範例是一個全部擠在一起的 Laravel 風格控制器:一個群組 use 陳述式、一個屬性陣列、建構子屬性提升、一個驗證呼叫、一個寫成一行的 if,還有一個搭配箭頭函式的 array_map。格式化之後,每個方法的大括號會移到獨立的一行,運算子和 => 前後加上空格,if 的內容被展開,長長的 response()->json() 呼叫也會換行,陣列每項一行並加上尾隨逗號。
不會改變的部分
格式化工具只改變排版。它不會重新命名變數、重新排序 use 陳述式、把 array() 轉成簡短語法,也不會修正邏輯。註解(包括 PHPDoc 區塊)都會保留,並隨著周圍的程式碼重新縮排。
小提示
- 使用和專案中 Prettier 或 PHP-CS-Fixer 設定相同的每行寬度和 PHP 版本,避免 diff 出現多餘的變動。
- 把從日誌或堆疊追蹤複製來的程式片段格式化後,會好讀很多。
- 在 issue 中分享程式碼前先格式化,審查者就能專注在程式碼的功能上。
常見問題
› 採用哪一種程式碼風格?
預設輸出遵循 PER Coding Style,也就是 PHP-FIG 發布、接替 PSR-12 的規範。類別和方法的大括號獨立成一行,控制結構的大括號留在同一行,縮排為四個空格。
› 為什麼 PHP 版本很重要?
有些語法要到特定版本才合法。例如參數列表中的尾隨逗號需要 PHP 8.0,所以目標版本較舊時,格式化工具就不會加上它。請選擇你的程式碼必須支援的最舊版本。
› 可以格式化混合 HTML 和 PHP 的檔案嗎?
可以。支援含有行內 HTML 和簡短 echo 標籤的範本檔案。PHP 的部分會被格式化,中間的 HTML 則保持原樣。
› 我的程式碼會被上傳嗎?
不會。格式化工具完全在你的瀏覽器中執行,不會傳送任何內容到伺服器。