PSR規範 php-cs-fixer 使用

mingzaily發表於2020-08-21

前言

在Laravel課程上學習到使用 StyleCI 來規範PHP程式碼,但是公司的程式碼是搭建在Gogs上,沒辦法使用 StyleCI
最後想到 StyleCI 也是基於 PHP-CS-Fixer 構建的,因此直接安裝相應擴充套件進行規範。

使用

安裝

composer require --dev friendsofphp/php-cs-fixer

在專案根目錄下新建.php_cs.dist檔案,並編寫需要執行的規則

PSR規範 php-cs-fixer 使用

<?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

就可以看見有哪些檔案不符合規範被更改

PSR規範 php-cs-fixer 使用

寫在後面

參考文章

最後打算有時間的話把PHP-CS-Fixer的規則翻譯做個Wiki。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章