PHP Coding Standards Fixerというのは、PHPのコードの書き方をコーディング規約に合わせて揃えてくれるものです。今なら「gofmtのようなもの」と言ったほうが通りがいいでしょうか。
http://cs.sensiolabs.org
合わせてくれるコーディング規約はPHP-FIGで取り決めているPSR0、PSR1、PSR2、およびsensiolabsのフレームワークであるsymfonyです。細かな調整や独自ルールを組み込むこともできますが、寄らば大樹の陰、PSRをそのまま使う前提とします。
CodeIgniter3はPSRには準拠してません。また、PSR0を適用するとCodeIgniterのファイル命名規則と衝突しCI_Loaderが動かなくなってしまいます。そこで、
- 適用する規約はPSR1、PSR2のみ。PSR0は適用しない
- 適用するファイルはユーザ管理下のファイルのみ。フレームワークやサードパーティーツールには適用しない。また、viewファイル、ドキュメントルート下、キャッシュファイル、ログファイルも対象外とする
というルールとします。
すると、.php_cs
ファイルは次のようになります。.php_cs
ファイルはphp-cs-fixerのデフォルト設定ファイルです。
<?php
$finder = Symfony\CS\Finder\DefaultFinder::create()
->exclude('system')
->exclude('docroot')
->exclude('application/cache')
->exclude('application/logs')
->exclude('application/views')
->exclude('application/third_party')
->in(__DIR__)
;
return Symfony\CS\Config\Config::create()
->level(Symfony\CS\FixerInterface::PSR2_LEVEL)
->fixers(array('-psr0'))
->finder($finder)
;
docrootはドキュメントルートです。
これをプロジェクトのルートディレクトリに置き、次のコマンドを実行します。
$ php-cs-fixer.phar fix
残念なことに、configディレクトリの多くのファイルが変更されます。configディレクトリはCodeIgniterで用意しているファイルが多いので、CIのルールからPSRのルールに書き換わるためです。
とはいえ、プロジェクトを始める初期段階で適用しておけば影響はほとんどありません。コーディングルールを徹底できるメリットのほうが大きいと思います。
最近のコメント