CodeIgniter3プロジェクトにPHP Coding Standards Fixerを適用するときの.php_csファイル

PHP Coding Standards Fixerというのは、PHPのコードの書き方をコーディング規約に合わせて揃えてくれるものです。今なら「gofmtのようなもの」と言ったほうが通りがいいでしょうか。

http://cs.sensiolabs.org

合わせてくれるコーディング規約はPHP-FIGで取り決めているPSR0PSR1PSR2、および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のルールに書き換わるためです。
とはいえ、プロジェクトを始める初期段階で適用しておけば影響はほとんどありません。コーディングルールを徹底できるメリットのほうが大きいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください