S2Container.phpをPEARでインストールします。フルパッケージでインストールする場合は、 プロジェクトディレクトリのlibディレクトリにS2Containerとして解凍します。 次のS2Containerの設定ファイルサンプルをプロジェクトディレクトリのconfigディレクトリにs2.phpとして保存します。
<?php require_once('S2Container/S2Container.php'); /** S2Log設定 */ seasar\Config::$LOG_LEVEL = seasar\log\impl\SimpleLogger::DEBUG; seasar\Config::$DEBUG_EVAL = false; seasar\Config::$DEBUG_VERBOSE = false; seasar\Config::$SIMPLE_LOG_FILE = SF_ROOT_DIR . '/log/s2.log'; /** S2Aop設定 */ seasar\aop\Config::$CACHING = false; seasar\aop\Config::$CACHE_DIR = SF_ROOT_DIR . '/cache/s2aop';
モジュールの作成時に生成されるactions.class.phpを次のように編集します。
<?php require_once(SF_ROOT_DIR . '/config/s2.php'); use seasar\container\S2ApplicationContext as s2app; s2app::import(dirname(dirname(__FILE__)) . '/lib/logic'); class defaultActions extends sfActions { public function executeIndex() { $this->greeting = s2app::get('Hoge')->greeting(); } }
アクションクラスで使用するHogeクラスをモジュールディレクトリのlib/logicディレクトリに作成します。
<?php class Hoge { public function greeting() { return 'Hello World !!'; } }
indexアクションのテンプレートを編集します。
greeting : <?php echo $greeting; ?> <br>
indexページにアクセスすると、「greeting : Hello World !!」と表示されます。
MockInterceptorをHogeクラスにアスペクトして、greetingメソッドの戻り値を設定します。
<?php class Hoge { /** * @S2Aspect('interceptor' => 'new seasar\aop\interceptor\MockInterceptor') * @S2Mock('return' => 'strval("Bye World !!")') */ public function greeting() { return 'Hello World !!'; } }
indexページにアクセスすると、「greeting : Bye World !!」と表示されます。
@S2Aspectアノテーションは、クラスに注釈することもできます。また、S2ApplicationContextの自動アスペクトを使用しても、 同様の結果を得ることができます。自動アスペクトを行う場合は、アクションクラスのS2ApplicationContext設定部に、 registerAspectメソッドを追記します。
<?php require_once(SF_ROOT_DIR . '/config/s2.php'); use seasar\container\S2ApplicationContext as s2app; s2app::import(dirname(dirname(__FILE__)) . '/lib/logic'); s2app::registerAspect('new seasar\aop\interceptor\MockInterceptor', '/^Hoge$/'); class defaultActions extends sfActions { public function executeIndex() { $this->greeting = s2app::get('Hoge')->greeting(); } }
© Copyright The Seasar Foundation and the others 2005-2010, all rights reserved. |