前言
在Laravel課程上學習到使用 StyleCI 來規範PHP程式碼,但是公司的程式碼是搭建在Gogs上,沒辦法使用 StyleCI
。
最後想到 StyleCI
也是基於 PHP-CS-Fixer 構建的,因此直接安裝相應擴充套件進行規範。
使用
安裝
composer require --dev friendsofphp/php-cs-fixer
在專案根目錄下新建.php_cs.dist
檔案,並編寫需要執行的規則
<?php
$header = <<<EOF
This file is part of the mingzaily/lumen-permission.
(c) mingzaily <mingzaily@163.com>
This source file is subject to the MIT license that is bundled
with this source code in the file LICENSE.
EOF;
$finder = PhpCsFixer\Finder::create()
->files()
->name('*.php')
->exclude('vendor') //排除
->exclude('tests') // 排除
->in(__DIR__)
->ignoreDotFiles(true)
->ignoreVCS(true);
$rules = array(
'@Symfony' => true, // 開啟預設的規則
'header_comment' => array('header' => $header),
'array_syntax' => array('syntax' => 'short'),
'ordered_imports' => true, // 按順序use匯入
'no_useless_else' => true, // 刪除沒有使用的else節點
'no_useless_return' => true, // 刪除沒有使用的return語句
'self_accessor' => true, //在當前類中使用 self 代替類名
'php_unit_construct' => true,
'single_quote' => true, //簡單字串應該使用單引號代替雙引號
'no_unused_imports' => true, //刪除沒用到的use
'no_singleline_whitespace_before_semicolons' => true, //禁止只有單行空格和分號的寫法
'no_empty_statement' => true, //多餘的分號
'no_whitespace_in_blank_line' => true, //刪除空行中的空格
'standardize_not_equals' => true, //使用 <> 代替 !=
'combine_consecutive_unsets' => true, // 當多個 unset 使用的時候,合併處理
'concat_space' => ['spacing' => 'one'], // .拼接必須有空格分割
'array_indentation' => true, // 陣列的每個元素必須縮排一次
'no_superfluous_phpdoc_tags' => false, // 移出沒有用的註釋
'blank_line_before_statement' => [
'statements' => [
'break',
'continue',
'declare',
'return',
'throw',
'try'
]
],// 空行換行必須在任何已配置的語句之前
'binary_operator_spaces' => [
'default' => 'align_single_space'
], //等號對齊、數字箭頭符號對齊
'align_multiline_comment' => [
'comment_type' => 'phpdocs_only'
],
'lowercase_cast' => false,// 型別強制小寫
'lowercase_constants' => true,// 常量為小寫
'lowercase_static_reference' => true,// 靜態呼叫為小寫
'no_blank_lines_after_class_opening' => true,
'phpdoc_separation' => false,// 不同註釋部分按照單空行隔開
'phpdoc_single_line_var_spacing' => true,
'phpdoc_indent' => true,
'phpdoc_align'=>[
'align'=>'vertical',
'tags'=>[
'param', 'throws', 'type', 'var', 'property'
]
]
);
return PhpCsFixer\Config::create()
->setRiskyAllowed(true)
->setRules($rules)
->setFinder($finder);
規則可以參考相應的 文件
執行
vendor/bin/php-cs-fixer fix
就可以看見有哪些檔案不符合規範被更改
寫在後面
參考文章
最後打算有時間的話把PHP-CS-Fixer的規則翻譯做個Wiki。
本作品採用《CC 協議》,轉載必須註明作者和本文連結