FuelPHPをやってみる (14) - モジュールを使う -
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にもあってモジュールにも同一なコントローラーがある場合にはモジュール側が優先される模様