Zend_Tool_Frameworkを使用しプロジェクトディレクトリを作成します。その後、s2container.phpを利用するための設定を追加します。
次のSVNリポジトリに今回作成したプロジェクトディレクトリがあります。
Zend_Tool_Frameworkで作成したプロジェクトにs2container.phpを利用するための設定を追加します。
s2.phpの作成.
s2container.phpの設定を行うs2.phpをapplication/configsディレクトリに作成します。
S2ActionHelperの作成.
アクションメソッド内でS2Containerにアクセスするアクションヘルパーを作成します。
Bootstrap.phpの編集.
アプリケーションのBootstrapでS2ActionHelperを利用する設定を行います。(_initActionHelperメソッド)
varディレクトリの作成.
ログファイル、セッションファイル、キャッシュなどを保存するためのvarディレクトリを作成します。
アクションメソッド内でS2Containerのコンポーネントを利用する場合は、S2ActionHelper経由でS2Containerにアクセスします。
public function addAction() { $this->_helper->viewRenderer->setNoRender(); echo $this->_helper->s2('Service_Calc')->add(1, 2); }
Service_Calcクラス
をapplication/servicesディレクトリに作成します。
アクションメソッド内からS2Containerへのアクセスは、S2ActionHelperのプロパティ経由でもアクセスすることができます。
プロパティとして指定した名前がコンポーネント名になります。
public function add2Action() { $this->_helper->viewRenderer->setNoRender(); echo $this->_helper->s2->calc->add(1, 2); }
上記の場合は"calc"と名前の付いたコンポーネントがS2Containerから取り出されます。 ただし、S2Containerからコンポーネント名でコンポーネントを取得する場合は、 あらかじめS2Containerにコンポーネントが登録されている必要があります。 S2ActionHelperは、各アクション毎にS2Containerを構築するための設定ファイルを読み込むことができます。 設定ファイルは、モジュールディレクトリのdiconsディレクトリに、"コントローラ名/アクション名.php"というファイルです。 上記の場合は、次のファイルがadd2アクションの設定ファイルになります。
UnitTestはtestsディレクトリに作成します。 tests/application/bootstrap.php で、Zend_Applicationのbootstrapメソッドを実行し、アプリケーション環境を構築します。 Service_CalcクラスのUnitTestは、tests/application/servicesディレクトリ にCalcTest.php として作成します。 Service_CalcTestクラスでは、setUpメソッドでテスト対象のサービスコンポーネントをS2Contaienr経由で取得しています。
class Service_CalcTest extends PHPUnit_Framework_TestCase { public function testAdd() { $this->assertEquals(3, $this->service->add(1, 2)); } public function setUp() { s2init(); $this->service = s2get('Service_Calc'); } public function tearDown() { $this->service = null; } }
UnitTestの実行結果は次のなります。
% cd tests % cat phpunit.xml <phpunit bootstrap="application/bootstrap.php"/> % phpunit application/services/CalcTest.php PHPUnit 3.4.2 by Sebastian Bergmann. . Time: 0 seconds OK (1 test, 1 assertion) %
© Copyright The Seasar Foundation and the others 2005-2010, all rights reserved. |