Hiroto's diary

プログラミングとか色々

PHP CS Fixerを使ってファイルの先頭に自動的にコメントを挿入する

PHPのコーディングスタイルを直すPHP CS Fixerでファイルの先頭にヘッダーを自動的に挿入する。

バージョン1系ではこの方法で出来ますが2系ではこの方法では出来ません

バージョン2系は以下の記事を見てください。

hiroto-k.hatenablog.com

.php_csにヘッダーを追加する

.php_csファイルが無い場合は作る。ある場合は書き加える。

<?php

use Symfony\CS\Fixer\Contrib\HeaderCommentFixer;

// 先頭に追加するコメント
// *等は勝手に挿入される
$header = <<<EOS
This file is part of MyApp.

(c) Hiroto Kitazawa <hiro.yo.yo1610@gmail.com>

For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
EOS;

HeaderCommentFixer::setHeader($header);

// 省略

fixersにheader_commentを追加する

fixerheader_commentが無いと挿入されないのでheader_commentを追加する。

<?php

// 省略

$fixers = [
    // 省略
    "header_comment",
];

return Config::create()->fixers($fixers);

fixコマンドを実行

通常通り実行する。

ただし、キャッシュを有効にしてると修正されない場合があるので.php_cs.cacheファイルがあれば削除しておく。

./vendor/bin/php-cs-fixer fix

Laravel/Lumenでレスポンスヘッダーのアサートをする

Illuminate\Foundation\Testing\Concerns\MakesHttpRequestsに実装されてるseeHeaderメソッドを使う。

framework/MakesHttpRequests.php at 5.2 · laravel/framework · GitHub

ヘッダーが存在する事を確認する

例えば/hogeにアクセスした時にX-Hogeヘッダが存在するかを確認するときには以下のようにする。

<?php

class HogeTest extends TestCase {

  public function testHoge {
    $this->visit("/hoge"); // "/hoge"へアクセス
    $this->seeHeader("X-Hoge");
  }

}

ヘッダーが存在して、値が同じな事を確認する

例えば/hogeにアクセスした時にX-Hogeヘッダが存在して、値がfoo-barであることをアサートするときには以下のようにする。

<?php

class HogeTest extends TestCase {

  public function testHoge {
    $this->visit("/hoge"); // "/hoge"へアクセス
    $this->seeHeader("X-Hoge", "foo-bar"); // アサート
  }

}

Laravelのコードを読んでいたらseeHeaderメソッドを見つけたので書き直しました。

© 2015 hiroxto