溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php-cs-fixer編碼格式化工具怎么用

發(fā)布時間:2021-09-14 15:39:39 來源:億速云 閱讀:148 作者:小新 欄目:編程語言

這篇文章主要介紹了php-cs-fixer編碼格式化工具怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

php-cs-fixer - PHP 編碼格式化工具

php-cs-fixer 是個代碼格式化工具,格式化的標準是 PSR-1、PSR-2 以及一些 symfony 的標準。這個工具也和 symfony、twig 等優(yōu)秀的 PHP 庫出自同門。

安裝與更新

需要使用 PHP 5.3.6 以上的版本。

你可以直接下載封裝好的 phar 包:php-cs-fixer.phar;

或者通過 wget 下載(下面的都是 OSX 和 Linux 上的用法):

wget http://get.sensiolabs.org/php-cs-fixer.phar -O php-cs-fixer

或者通過 curl 下載:

curl http://get.sensiolabs.org/php-cs-fixer.phar -o php-cs-fixer

下載完成后給可執(zhí)行的權限,然后移動到 bin 目錄下面即可:

sudo chmod a+x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer

這樣就可以在任何地方直接使用 php-cs-fixer 命令來調用了。

也可以用過 Composer 來安裝:

composer global require fabpot/php-cs-fixer

如果你是 Mac 用戶、homebrew 用戶并且已經(jīng) tap 過 homebrew/php 的話,也可以直接:

brew install php-cs-fixer

或者:

brew install homebrew/php/php-cs-fixer

如果后續(xù)需要更新的話:

php-cs-fixer self-update

如果是通過 homebrew 安裝的:

brew upgrade php-cs-fixer

如果沒有將執(zhí)行文件放到 bin 目錄下或者在 Windows需要使用 php php-cs-fixer.phar 代替 php-cs-fixer。

用法

用法也很簡單,最基本的命令參數(shù)就是 fix,直接執(zhí)行時會盡可能多的根據(jù)默認標準格式化代碼:

# 格式化目錄 如果是當前目錄的話可以省略目錄
php-cs-fixer fix /path/to/dir
# 格式化文件
php-cs-fixer.phar fix /path/to/file

--verbose 選項用于展示應用了的規(guī)則,默認是文本(txt)格式。

--level 選項用于控制需要使用的規(guī)則層級:

php-cs-fixer fix /path/to/project --level=psr0
php-cs-fixer fix /path/to/project --level=psr1
php-cs-fixer fix /path/to/project --level=psr2
php-cs-fixer fix /path/to/project --level=symfony

默認情況下執(zhí)行的是 PSR-2 的所有選項以及一些附加選項(主要是 symfony 相關的)。還有一些屬于『貢獻級別』的選項,你可以通過 --fixers 選擇性的添加,--fixers 的多個條件要用逗號分開:

php-cs-fixer fix /path/to/dir --fixers=linefeed,short_tag,indentation

如果有需要的話也可以使用 -name_of_fixer 采取黑名單的方式設定禁用哪些選項。如果同時設定了 --fixers-name_of_fixer,前者的優(yōu)先級更高。

同時使用 --dry-run--diff 命令可以顯示出需要修改的匯總,但是并不實際修改。

通過以下方式也可以查看有哪些內容是會修改的,但是并不實際改動文件:

cat foo.php | php-cs-fixer fix --diff -

自定義配置

--config 選項可以用來設置選取目錄以及文件進行分析并格式化,但是這個選項只能設置一些常見的已知的項目,比如 symfony:

# For the Symfony 2.3+ branch
php-cs-fixer fix /path/to/sf23 --config=sf23

已有選項:

  • default 默認配置

  • magento magento 項目

  • sf23 symfony 的項目

更多時候,我們可以通過配置文件來自定義格式化選項以及搜索的目錄和文件。自定義配置通過在項目根目錄添加一個 .php_cs 文件的方式實現(xiàn)。

設置本身就是 PHP 代碼,最后返回一個 Symfony\CS\ConfigInterface 的實例即可。你可以設置格式化的選項、級別、文件以及目錄。

下面是一個簡單的例子:

<?php

$finder = Symfony\CS\Finder\DefaultFinder::create()
    ->exclude('somedir') // 忽略 somedir
    ->in(__DIR__) // 當前目錄
;

return Symfony\CS\Config\Config::create()
    ->fixers(['strict_param', 'short_array_syntax']) // 添加兩個選項
    ->finder($finder)
;

如果你想完全自定義格式化選項,就需要將格式化級別清空,并指定好所有需要的選項:

<?php

$finder = Symfony\CS\Finder\DefaultFinder::create()
    ->in(__DIR__)
;

return Symfony\CS\Config\Config::create()
    ->level(Symfony\CS\FixerInterface::NONE_LEVEL)
    ->fixers(['trailing_spaces', 'encoding'])
    ->finder($finder)
;

你也可以通過在選項前面添加 - 的方式來禁用某些選項,比如下面這個例子不采用 PSR-0:

<?php

$finder = Symfony\CS\Finder\DefaultFinder::create()
    ->exclude('somedir')
    ->in(__DIR__)
;

return Symfony\CS\Config\Config::create()
    ->fixers(['-psr0'])
    ->finder($finder)
;

默認條件下的格式化級別是 symfony (最嚴格),你可以修改這個級別:

<?php

return Symfony\CS\Config\Config::create()
    ->level(Symfony\CS\FixerInterface::PSR2_LEVEL)
;

通過這些設置選項的組合,可以很輕易的定制出自己想要的效果。

你也可以通過 --config-file 選項指定 .php_cs 文件的位置。

啟用緩存可以在后續(xù)的執(zhí)行中加快速度,通過以下方法設置:

<?php

return Symfony\CS\Config\Config::create()
    ->setUsingCache(true)
;

編輯器插件

下面這些編輯器/IDE 的插件可以幫你簡化格式化的工作:

  • Atom

  • NetBeans

  • PhpStorm

  • Sublime Text

  • Vim

格式化選項

  • psr0 [PSR-0]
      PSR-0 的路徑和命名空間標準

  • encoding [PSR-1]
      文件必須是不帶 BOM 的 UTF-8 編碼;

  • short_tag [PSR-1]
      只能使用 <?php ?><?= ?> 兩種 PHP 代碼標簽;

  • braces [PSR-2]
      所有語句塊都必須包含在花括號內,且位置以及縮進是符合標準的;

  • class_definition [PSR-2]
      class、trait、interfaces 關鍵字和名稱之間只能有一個空格;

  • elseif [PSR-2]
      使用 elseif 替代 else if

  • eof_ending [PSR-2]
      文件必須以空白行結尾;

  • function_call_space [PSR-2]
      調用函數(shù)和方法時,函數(shù)名和方法名與參數(shù)擴展之間不能有空格;

  • function_declaration [PSR-2]
      函數(shù)聲明時空格的使用需要符合 PSR-2;

  • indentation [PSR-2]
      代碼必須使用四個空格縮進而不是制表符;

  • line_after_namespace [PSR-2]
      命名空間的聲明后必須有一個空白行;

  • linefeed [PSR-2]
      所有 PHP 文件都只能使用 LF(Unix) 結尾;

  • lowercase_constants [PSR-2]
      PHP 常量 true、false 和 null 必須使用小寫;

  • lowercase_keywords [PSR-2]
      PHP 關鍵字必須都是小寫;

  • method_argument_space [PSR-2]
      方法聲明及調用時,參數(shù)之間的逗號前不能有空格,逗號后必須有一個空格;

  • multiple_use [PSR-2]
      每個 use 只能聲明一個元素;

  • parenthesis [PSR-2]
      圓括號內兩側不能有空格;

  • php_closing_tag [PSR-2]
      純 PHP 文件必須省略 ?> 標簽;

  • single_line_after_imports [PSR-2]
      每個 use 聲明獨立一行,且 use 語句塊之后要有一個空白行;

  • trailing_spaces [PSR-2]
      刪除非空行之后多余的空格;

  • visibility [PSR-2]
      每個屬性和方法都必須指定作用域是 public、protected 還是 private,abstractfinal 必須位于作用域關鍵字之前,static 必須位于作用域之后;

  • array_element_no_space_before_comma [symfony]
      數(shù)組聲明中,逗號之前不能有空格;

  • array_element_white_space_after_comma [symfony]
      數(shù)組聲明中,逗號之后必須有一個人空格;

  • blankline_after_open_tag [symfony]
      PHP 開始標簽的同一行不能有代碼,且下面必須有一個空白行;

  • concat_without_spaces [symfony]
      點連接符左右兩邊不能有多余的空格;

  • double_arrow_multiline_whitespaces [symfony]
    => 操作符兩端不能有多個空白行;

  • duplicate_semicolon [symfony]
      刪除重復的分號;

  • empty_return [symfony]
      return 語句如果沒有任何返回的話直接寫 return 即可(不用 return null);

  • extra_empty_lines [symfony]
      刪除多余的空白行;

  • function_typehint_space [symfony]
      修正函數(shù)參數(shù)和類型提示之間的缺失的空格問題;

  • include [symfony]
    include 和文件路徑之間需要有一個空格,文件路徑不需要用括號括起來;

  • join_function [symfony]
      使用 join 替換 implode 函數(shù);

  • list_commas [symfony]
      刪除 list 語句中多余的逗號;

  • method_argument_default_value [symfony]
      函數(shù)參數(shù)中有默認值的參數(shù)不能位于無默認值的參數(shù)之前;

  • multiline_array_trailing_comma [symfony]
      多行數(shù)組最后一個元素應該也有一個逗號;

  • namespace_no_leading_whitespace [symfony]
      命名空間前面不應該有空格;

  • new_with_braces [symfony]
      使用 new 新建實例時后面都應該帶上括號;

  • no_blank_lines_after_class_opening [symfony]
      類開始標簽后不應該有空白行;

  • no_empty_lines_after_phpdocs [symfony]
      PHP 文檔塊開始開始元素下面不應該有空白行;

  • object_operator [symfony]
    T_OBJECT_OPERATOR (->) 兩端不應有空格;

  • operators_spaces [symfony]
      二進制操作符兩端至少有一個空格;

  • phpdoc_indent [symfony]
      phpdoc 應該保持縮進;

  • phpdoc_inline_tag [symfony]
      修正 phpdoc 內聯(lián)標簽格式,使標簽與后續(xù)內容始終位于一行;

  • phpdoc_no_access [symfony]
    @access 不應該出現(xiàn)在 phpdoc 中;

  • phpdoc_no_empty_return [symfony]
    @return void@return null 不應該出現(xiàn)在 phpdoc 中;

  • phpdoc_no_package [symfony]
    @package@subpackage 不應該出現(xiàn)在 phpdoc 中;

  • phpdoc_params [symfony]
    @param, @throws, @return, @var, 和 @type 等 phpdoc 標簽都要垂直對齊;

  • phpdoc_scalar [symfony]
      phpdoc 標量類型聲明時應該使用 int 而不是 integer,bool 而不是 boolean,float 而不是 real 或者 double

  • phpdoc_separation [symfony]
      phpdoc 中注釋相同的屬性應該放在一起,不同的屬性之間應該有一個空白行分割;

  • phpdoc_short_description [symfony]
      phpdoc 的簡要描述應該以 .、!? 結尾;

  • phpdoc_to_comment [symfony]
      文檔塊應該都是結構化的元素;

  • phpdoc_trim [symfony]
      除了文檔塊最開始的部分和最后的部分,phpdoc 開始和結束都應該是有內容的;

  • phpdoc_type_to_var [symfony]
    @type 需要使用 @var 代替;

  • phpdoc_types [symfony]
      phpdoc 中應該正確使用大小寫;

  • phpdoc_var_without_name [symfony]
    @var@type 注釋中不應該包含變量名;

  • pre_increment [symfony]
      不應該使用 ++i--i 的用法;

  • print_to_echo [symfony]
      如果可能的話,使用 echo 代替 print 語句;

  • remove_leading_slash_use [symfony]
      刪除 use 前的空行;

  • remove_lines_between_uses [symfony]
      刪除 use 語句塊中的空行;

  • return [symfony]
    return 之前應該有一個空行;

  • self_accessor [symfony]
      在當前類中使用 self 代替類名;

  • short_bool_cast [symfony]
    bool 類型數(shù)據(jù)前不應該試用兩個感嘆號;

  • single_array_no_trailing_comma [symfony]
      PHP 單行數(shù)組最后一個元素后面不應該有空格;

  • single_blank_line_before_namespace [symfony]
      命名空間聲明前應該有一個空白行;

  • single_quote [symfony]
      簡單字符串應該使用單引號代替雙引號;

  • spaces_after_semicolon [symfony]
      修復分號后面的空格;

  • spaces_before_semicolon [symfony]
      禁止只有單行空格和分號的寫法;

  • spaces_cast [symfony]
      變量和修飾符之間應該有一個空格;

  • standardize_not_equal [symfony]
      使用 <> 代替 !=

  • ternary_spaces [symfony]
      三元運算符之間的空格標準化;

  • trim_array_spaces [symfony]
      數(shù)組需要格式化成和函數(shù)/方法參數(shù)類似,上下沒有空白行;

  • unalign_double_arrow [symfony]
      不對其 =>;

  • unalign_equals [symfony]
      不對其等號;

  • unary_operators_spaces [symfony]
      一元運算符和運算數(shù)需要相鄰;

  • unneeded_control_parentheses [symfony]
      刪除控制結構語句中多余的括號;

  • unused_use [symfony]
      刪除沒有用到的 use 語句;

  • whitespacy_lines [symfony]
      刪除空白行中多余的空格;

除了以上這些選項以外,還有一些用戶貢獻的選項,這里就不再一一介紹了。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“php-cs-fixer編碼格式化工具怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI