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.phar
は php-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;
#eof_ending [PSR-2]## の代わりに
elseif
を使用します。 - ファイルは空行で終わる必要があります;
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]
ステートメント内の余分なコンマを削除します;
-
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 ドキュメント ブロックの先頭の下に空白行があってはなりません;-
T_OBJECT_OPERATOR
object_operator [symfony] ( - ->
) スペースがあってはなりません;
#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 と
##phpdoc_no_package [symfony]
@return nullは phpdoc に現れてはなりません;
-
@package と @subpackage
は phpdoc に現れてはなりません;
##phpdoc_params [symfony] - @param
、@throws、
phpdoc スカラー型宣言では # の代わりに
@return、
@var、および
@typephpdoc タグは必須です
##phpdoc_scalar [symfony] int - を使用する必要があります。
boolean の代わりに ##integer、
bool、
realまたは
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_var_without_name [symfony]
に置き換えられます phpdoc の場合は正しく使用する必要があります; @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
を使用します。
bool##short_bool_cast [symfony]
データ型の前に 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 ビデオ チュートリアル