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. |