この php-cs-fixer エンコード形式設定ツールの使い方を知りませんか?

藏色散人
リリース: 2023-04-10 16:50:02
転載
4477 人が閲覧しました

php-cs-fixer - PHP コーディング整形ツール

php-cs-fixer はコード整形ツールで、整形標準は PSR-1、PSR-2、およびいくつかの symfony のものです。 。このツールは、symfony、twig、その他の優れた 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
ログイン後にコピー

ダウンロードが完了したら、実行権限を付与して、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 ユーザーで、homebrew/php をテープに保存している場合は、直接インストールすることもできます:

brew install php-cs-fixer
ログイン後にコピー

Or :

brew install homebrew/php/php-cs-fixer
ログイン後にコピー

後で更新する必要がある場合:

php-cs-fixer self-update
ログイン後にコピー

homebrew を通じてインストールされている場合:

brew upgrade php-cs-fixer
ログイン後にコピー

実行可能ファイルが bin ディレクトリに配置されていない場合、または実行可能ファイルが bin ディレクトリに配置されている必要がある場合Windows で使用される php php-cs-fixer.pharphp-cs-fixer を置き換えます。

使用方法

使用方法も非常に簡単です。最も基本的なコマンド パラメータは fix です。直接実行すると、コードはデフォルトの標準に従ってフォーマットされます。可能な限り:

# 格式化目录 如果是当前目录的话可以省略目录
php-cs-fixer fix /path/to/dir
# 格式化文件
php-cs-fixer.phar fix /path/to/file
ログイン後にコピー

--verbose オプションを使用して、適用されたルールを表示します。デフォルトはテキスト (txt) 形式です。

--level オプションは、使用するルールのレベルを制御するために使用されます:

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
ログイン後にコピー

デフォルトでは、PSR-2 のすべてのオプションといくつかの追加オプションが実行されます。 (主に symfony 関連です)。 「貢献レベル」に属するオプションもいくつかあります。--fixers を使用して選択的に追加できます。--fixers の複数の条件はカンマで区切る必要があります:

php-cs-fixer fix /path/to/dir --fixers=linefeed,short_tag,indentation
ログイン後にコピー

必要に応じて、-name_of_fixer を使用して、ブラックリストを使用して無効にするオプションを設定することもできます。 --fixers-name_of_fixer の両方が設定されている場合、前者の方が優先されます。

--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
ログイン後にコピー

既存のオプション:

  • デフォルトのデフォルト構成

  • magento magento プロジェクト

  • sf23 symfony プロジェクト

多くの場合、フォーマット オプションをカスタマイズしたり、構成ファイルを通じてディレクトリやファイルを検索したりできます。カスタム構成は、プロジェクトのルート ディレクトリに .php_cs ファイルを追加することで実現されます。

設定自体は 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 ファイルの場所を指定することもできます。

キャッシュを有効にすると、後続の実行が高速化されます。次の方法で設定してください:

<?php

return Symfony\CS\Config\Config::create()
    ->setUsingCache(true)
;
ログイン後にコピー

エディタ プラグイン

次のエディタ/IDE プラグインは、作業を簡素化するのに役立ちます。書式設定の動作:

  • #Atom

  • NetBeans

  • PhpStorm

  • 崇高なテキスト

  • Vim

書式設定オプション

  • psr0 [ PSR-0] PSR-0 のパスと名前空間の標準


  • ##エンコーディング [PSR-1]

    ファイルは BOM なしで UTF-8 エンコードされている必要があります;


  • short_tag [PSR-1]

    PHP コード タグは 2 つだけです。
    および <?= ?> を使用できます。

  • ##braces [PSR-2]
  • すべてのステートメント ブロックは中括弧で囲む必要があり、位置とインデントは標準に準拠しています;


  • class_defining [PSR-2]
  • クラス、特性、インターフェイスのキーワードと名前の間にはスペースを 1 つだけ使用できます;


  • elseif [PSR-2]
  • else if;
    ## の代わりに elseif
    を使用します。

    #eof_ending [PSR-2]
  • ファイルは空行で終わる必要があります;

  • function_call_space [PSR-2]
    関数とメソッドを呼び出すときは、関数名、メソッド名、パラメータ展開の間にスペースを入れてはなりません。

  • function_declaration [PSR-2]
    関数を宣言するときのスペースの使用は PSR-2 に準拠する必要があります;

  • インデント [PSR-2]
    コードはタブではなく 4 つのスペースを使用してインデントする必要があります。

  • 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] メソッドが宣言されて呼び出されるとき、パラメータ カンマの前にスペースはなく、カンマの後には 1 つのスペースが必要です;


  • ##multiple_use [PSR-2]

    各使用で宣言できる要素は 1 つだけです;


  • ##括弧 [PSR-2]
  • 両方にスペースを含めることはできません括弧の両側;


    ##php_closed_tag [PSR-2]
  • 純粋な PHP ファイルでは、

    ?># を省略する必要があります。 ## tag;


    single_line_after_imports [PSR-2]

  • 各 use ステートメントは別の行に置く必要があり、 use ステートメント ブロックの後の空白行であること。


  • ##trailing_spaces [PSR-2]

    空白行以外の行の後の余分なスペースを削除する;


  • visibility [PSR-2]

    各プロパティとメソッドは
  • public
  • のスコープを指定する必要があります、

    protected または private
    abstract および final はスコープ キーワードの前にある必要があり、static はスコープ キーワードの後に​​ある必要があります。スコープ; ##array_element_no_space_before_comma [symfony]

    配列宣言では、コンマの前にスペースを入れることはできません;


  • array_element_white_space_after_comma [symfony]

    配列宣言では、コンマの後にスペースが必要です;

  • ##blankline_after_open_tag [symfony]

    PHP 開始タグの同じ行にコードを置くことはできず、その下に空行がなければなりません;

  • concat_without_spaces [ symfony]
    ドットコネクタの左側と右側に余分なスペースを置くことはできません;

  • ##double_arrow_multiline_whitespaces [symfony]
    =>
    演算子の両端に複数の空白行を含めることはできません;

  • ##duplicate_semicolon [symfony]
    重複したセミコロンを削除します;

  • ##empty_return [symfony]
  • return ステートメントが何も返さない場合は、return とだけ記述します (null を返す必要はありません);


  • extra_empty_lines [ symfony]
  • 余分な空白行を削除します。


  • function_typehint_space [symfony]
  • 間のスペース不足の問題を修正します。関数パラメータと型ヒント;


  • include [symfony]
  • include スペースが必要ですファイルパスとファイルパスの間 ファイルパスを括弧で囲む必要はありません;


  • join_function [symfony]
    join を使用して implode
    関数を置き換えます;

  • list_commas [symfony]
    list ステートメント内の余分なコンマを削除します;

  • method_argument_default_value [symfony] パラメーター関数パラメータにデフォルト値があるものは、デフォルト値のないパラメータの前に置くことはできません;


    #multiline_array_trailing_comma [symfony]
  • 最後の複数行の配列の要素にはカンマも必要です;




    namespace_no_leading_whitespace [symfony]
  • の前にスペースがあってはなりません名前空間;




    ##new_with_braces [symfony]

  • 新しいインスタンスを作成するときは、Use New の後にかっこを付ける必要があります。

  • #no_blank_lines_after_class_opening [symfony]

    クラス開始タグ Line;

  • の後に空白スペースがあってはなりません
    no_empty_lines_after_phpdocs [symfony]

    PHP ドキュメント ブロックの先頭の下に空白行があってはなりません;


  • object_operator [symfony]

    T_OBJECT_OPERATOR
  • (
  • ->

    ) スペースがあってはなりません;

  • #operators_spaces [symfony]
    二項演算子の両端には少なくとも 1 つのスペースがあります;

  • ##phpdoc_indent [symfony] phpdoc はインデントされたままにする必要があります;


  • #phpdoc_inline_tag [symfony]

    正しいタグと後続のコンテンツが常に同じ行に配置されるようにするための phpdoc インライン タグ形式;


  • ##phpdoc_no_access [symfony]
  • @access は phpdoc に含めるべきではありません;


  • phpdoc_no_empty_return [symfony]
  • @return void
    @return null は phpdoc に現れてはなりません;

    ##phpdoc_no_package [symfony]
  • @package@subpackage
    は phpdoc に現れてはなりません;

    ##phpdoc_params [symfony]

  • @param

    @throws
    @return@var、および @type phpdoc タグは必須です
    ##phpdoc_scalar [symfony]

    phpdoc スカラー型宣言では # の代わりに
  • int
  • を使用する必要があります。

    boolean の代わりに ##integer
    boolreal または double の代わりに float;##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
  • データ型の前に 2 つの感嘆符を使用しないでください。

  • single_array_no_trailing_comma [symfony]
    PHP 単一行配列の最後の要素の後にスペースがあってはなりません;

  • 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] 配列は、関数/メソッドのパラメーターと同様に、上下に空白行を入れずにフォーマットする必要があります。
    unalign_double_arrow [symfony]
    Unalign
    =>

    ;


  • unalign_equals [symfony]

    符号と等しくありません;
  • unary_operators_spaces [symfony]
    単項演算子とオペランドは隣接している必要があります;

  • unneeded_control_parentheses [symfony]
    制御構造ステートメント内の余分な括弧を削除します;

  • ##unused_use [symfony]

    未使用の use ステートメントを削除します;


  • whitespacy_lines [symfony]

    空行の余分なスペースを削除します;

  • 上記のオプションに加えて、ユーザー提供のオプションもいくつかありますが、ここでは 1 つずつ紹介しません。

コーディング スタイルが統一されているかどうか、どの標準を実装する必要があるかについては、各人および各チームが独自の意見を持っている可能性があります。ここではあくまで紹介ですので、どのように選択するかはあなた次第です。オープンソース プロジェクトの場合は、StyleCI を試すこともできます。

推奨学習: 「

PHP ビデオ チュートリアル


以上がこの php-cs-fixer エンコード形式設定ツールの使い方を知りませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート