PhpStorm 配置 php-cs-fixer
良好的程式碼規範可以提高程式碼可讀性,團隊溝通維護成本。最推薦大家遵守的是 php-fig(PHP Framework Interop Group) 組織定義的 PSR-1 、 PSR-2 兩個。不瞭解的同學可以先通過連線點選過去閱讀下。
這篇文章主要介紹下 php-cs-fixer 格式化程式碼工具,讓你的程式碼符合規範。
php-cs-fixer (PHP Coding Standards Fixer) 目前已經有發展到 v2 版本,所以我們使用最新的版本,
官方現在有兩個版本 v1 和 v2 ,其中 v1 需要 php 5.3.6 版本以上, v2 需要 php 5.6 版本以上。
安裝
安裝方式有很多種,可以直接下載.phar 檔案,也可以通過 composer 的方式進行全域性安裝。更多安裝方法可以參考
FriendsOfPHP/PHP-CS-Fixer
安裝方式
這裡我使用的是 Windos7 環境,所以我使用的是 Locally 模式,也就是直接下載了.phar 檔案
將下載的 php-cs-fixer-v2.phar 檔案重新命名為 php-cs-fixer.phar 然後我放到了 E:\DevTools\php-cs-fixer.phar。你可以放到你的任意目錄,但請記住這個地址,後面配置 phpstorm 的時候會用到。
配置
開啟 phpstorm 設定項,依次 Tools→External Tools, 點選加號 (+)
Program: 填寫你的 PHP 可執行檔案路徑
Arguments: 填寫剛剛上面讓你記住的 php-cs-fixer.phar 的路徑地址,我的配置如下
E:\DevTools\php-cs-fixer.phar
fix
--rules=@PSR1,@PSR2
–verbose
$FileDir$$FileName$
Working directory: $ProjectFileDir$
最後你要進行格式化操作,只要設定下快捷鍵就可以了。具體設定如下,你可以設定你想設定的快捷鍵。
儘管上面這樣以後,不出意外就可以按 Ctrl+Alt+Shift+L 使用了。但是如果我們想在格式化之前看看哪些程式碼不規範要如何操作呢?
從上面的截圖也可以看到,我多配置了一個 php-cs-fixer-diff 的快捷鍵,這個快捷鍵就是執行後可以看到哪些程式碼將被轉換。配置和上面的類似,只是在 Arguments 這個不同。如下
E:\DevTools\php-cs-fixer.phar
fix
--rules=@PSR1,@PSR2
–verbose
–dry-run
–diff
–using-cache=no
$FileDir$$FileName$
可以看出基本上相同,主要就是增加了 —dry-run 和 —diff 引數,至於 —using-cache 可加可不加。最後依然配置一個快捷鍵 (alt+f)。執行效果如下
可以看到,將要被轉換的程式碼都已經標識出來了,類似於 git diff 後的效果。
配置檔案方式配置 rules
上面我們把格式化規則已經寫在了命令列後面,這樣其實已經可以達到我們的預期了。但是 php-cs-fixer 還支援將規則等配置寫入一個配置檔案,預設為.php_cs。你可以使用 —config 來指定你的配置檔案。
總的來說,使用配置檔案的方式最大的一個好處是可以團隊成員共用。如果你的團隊制定了程式碼規範,那麼把配置檔案提交到版本控制大家可以共用一套程式碼規範,而不需要每個人都要配置一遍。但是最基本的 php-cs-fixer 的安裝和 ide 整合工作還是要做的。
首先我們刪除 ide 裡配置的規則。將 Arguments 配置中的 —rules 選項刪除,最終的結果類似如下
E:\DevTools\php-cs-fixer.phar
fix
–allow-risky=yes
–verbose
$FileDir$$FileName$
然後我們在當前專案下新建一個.php_cs 檔案,這個檔案其實是一段 PHP 程式碼。
<?php
/**
Created by PhpStorm.
User:
Date:
Time:
/
$finder = PhpCsFixer\Finder::create()
->files()
->name('*.php')
->exclude('vendor')
->in(__DIR__)
->ignoreDotFiles(true)
->ignoreVCS(true);
$fixers = array(
'@PSR2' => true,
'single_quote' => true, //簡單字串應該使用單引號代替雙引號;
'no_unused_imports' => true, //刪除沒用到的use
'no_singleline_whitespace_before_semicolons' => true, //禁止只有單行空格和分號的寫法;
'self_accessor' => true, //在當前類中使用 self 代替類名;
'no_empty_statement' => true, //多餘的分號
'no_extra_consecutive_blank_lines' => true, //多餘空白行
'no_blank_lines_after_class_opening' => true, //類開始標籤後不應該有空白行;
'include' => true, //include 和檔案路徑之間需要有一個空格,檔案路徑不需要用括號括起來;
'no_trailing_comma_in_list_call' => true, //刪除 list 語句中多餘的逗號;
'no_leading_namespace_whitespace' => true, //名稱空間前面不應該有空格;
'standardize_not_equals' => true, //使用 <> 代替 !=;
'binary_operator_spaces' => ['default' => 'align_single_space'] //等號對齊、數字箭頭符號對齊
);
return PhpCsFixer\Config::create()
->setRules($fixers)
->setFinder($finder)
->setUsingCache(false);
最後就可以執行你上面設定的快捷鍵來格式化程式碼了。
最終配置
配置選項中文說明
php-cs-fixer (PHP Coding Standards Fixer) | Scholer’s Blog
本作品採用《CC 協議》,轉載必須註明作者和本文連結