FuelPHPをやってみる (14) - モジュールを使う -

2012-11-18T00:00:00+00:00 FuelPHP PHP

fuel/app/modulesに

└── sample
    └── classes
        └── controller
            └── sample.php

な感じでアプリケーションモジュールとして定義出来る。ディレクトリ構造はfuel/app内とほぼ同様な構造かと。んで、コントローラーの場合は http://localhost/モジュール名/コントローラー名/アクション名 等でアクセス可能な模様(モジュール名は省略可能な模様)

fuel/app/modules/sample/classes/controller/sample.php

<?php

namespace Sample;

class Controller_Sample extends Controller {
    public function get_show() {
        return View::forge("sample");
    }
}

モジュール名と同等となるnamespaceを設定。っていう感じで別途コンポーネント化のような感じで使える模様

fuel/app/modules/sample/tests/controller/test_sample.php

<?php

namespace Sample;

class Test_Controller_Sample extends TestCase {
    public function test_show() {
        $res = Request::forge("sample/sample/show")->execute()->response();

        $this->assertEquals(200, $res->status);
    }
}

テストも同様。だけどモジュールの場合テスト書いてoil testしてもデフォルトのphpunit.xmlがmoduleを参照しないので設定する

fuel/core/phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" stopOnFailure="false" bootstrap="../core/bootstrap_phpunit.php">
    <testsuites>
        <!-- 追加 -->
        <testsuite name="modules">
            <directory suffix=".php">../app/modules/*/tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

追記

app/classes/controllerにもあってモジュールにも同一なコントローラーがある場合にはモジュール側が優先される模様

sodaを使ってみる fluentdを使ってみる (2) - exec_filter -