使用 Laravel 團隊的 Coding Style,簡單介紹 Laravel Pint

程式技術
sharkHead

之前我有分享過一篇文章簡單介紹 PHP CS Fixer,開發團隊可以使用 PHP CS Fixer 來統一團隊的 coding style,而 PHP CS Fixer 預設會使用 PHP-FIG 提出的 PSR-12 來當作整理 coding style 的依據。

但其實每個團隊可能都會有自己習慣的一套 coding style 標準,而且不一定會與 PSR-12 完全相同,例如知名部落格軟體 WordPress,他們就有自己定義的一套標準

// WordPress 在變數命名上會使用蛇形命名 (snake_case)
// 不能使用駝峰式命名 (camelCase)

class Walker_Category extends Walker {}
class WP_HTTP {}

interface Mailer_Interface {}
trait Forbid_Dynamic_Properties {}
enum Post_Status {}

Laravel Pint 是由 Laravel 團隊所開發,是 PHP CS Fixer 的再包裝版本,預設 coding style 會使用 Larvel 團隊所定義的標準。

如果你覺得 Laravel 團隊的 coding style 標準,符合你對程式碼的審美觀,或是說你本身是想對 Laravel Core 提出 PR 的大神,那麼 Larvel Pint 會是很方便的 coding style 整理工具。

首先使用 Composer 安裝 Laravel Pint。

composer require laravel/pint --dev

然後就可以直接執行 pint 指令來整理整個專案的 coding style。

./vendor/bin/pint

嫌太多字的可以使用 alias

alias pint='./vendor/bin/pint'

pint 執行時可以指定資料夾或是單一檔案。

pint app/Models
 
pint app/Models/User.php

如果你想看  pint 在執行時對程式碼做了哪些更動,可以使用 -v

pint -v

如果只是想看看有哪邊會更動,但不要實際修改程式碼,可以使用 --test

pint --test

pint 也可以只查看尚未被 commit 的檔案。

pint --dirty

設定 Laravel Pint 的規則

可以在專案根目錄新增一個 pint.json 檔案,用來設定 Laravel Pint 的整理規則。

preset 代表要使用的標準,預設是 laravel,你可以改為 psr12,改回使用 PSR-12 的標準。

{
    "preset": "laravel"
}

Laravel Pint 在執行時,預設會載入根目錄的 pint.json,你也可以使用 --config 指定要載入的設定檔案。

pint --config vendor/my-company/coding-style/pint.json

因為 Laravel Pint 是 PHP CS Fixer 的再包裝版本,所以設定完全與 PHP CS Fixer 一模一樣。

你可以參考 PHP-CS-Fixer Configurator 來修改 Larvel Pint 的設定

{
    "preset": "laravel",
    "rules": {
        "blank_line_between_import_groups": true,
        "combine_consecutive_issets": true,
        "line_ending": true
    }
}

排除執行的檔案

你可以在設定檔案中使用 exclude 排除資料夾,這樣 pint 在執行時就會跳過該資料夾底下所有檔案。

{
    "exclude": [
        "my-specific/folder"
    ]
}

也可以使用 notPath 直接指定要跳過檔案。

{
    "notPath": [
        "path/to/excluded-file.php"
    ]
}

或是使用 notName,當檔案名稱符合你所設定的特徵時,pint 也會跳過。

{
    "notName": [
        "*-my-file.php"
    ]
}

讓開發工具支援 Pint

通常我們都會開啟 IDE 的 auto reformat 功能,在編輯完檔案並儲存時,請 IDE 幫我們自動整理程式碼的排版。

VS Code

Larvel Pint 在 VS Code 有套件支援,下載後就可以直接使用。

PhpStorm

PhpStorm 上面雖然沒有套件支援 Laravel Pint,但我們可以使用 File Watchers 來實現使用 Pint 幫我們排版的功能。

首先打開 PhpStorm 的設定,至 Tools → Actions on Safe → Reformat Code 中將預設的 PHP 給關閉,不使用 PhpStorm 原本自帶的 PHP format 功能。

2023_01_14_14_30_27_8ddfef536531.png

在底下 File Watcher,點選 Configure 來新增一個 Laravel Pint 的 Watcher。

2023_01_14_14_30_01_ba29852a395a.png

Mac / WSL 的設定如下,但要注意 Program 中所設定的路徑,Mac 要使用斜線 (/),WSL 要使用反斜線 (\)。

2023_01_14_13_56_11_37b18c422e48.png
WSL 中的設定

設定完成之後,當你編輯檔案並儲存時,Watcher 就會自動幫你對該檔案執行 pint 指令。

參考資料

sharkHead
written by
sharkHead

後端打工仔,在下班後喜歡研究各種不同的技術。稍微擅長 PHP,並偶爾涉獵前端開發。個性就像動態語言般隨興,但渴望做事能像囉嗦的靜態語言那樣嚴謹。

0 則留言