2.6. Aspect Anotation

Aspectの登録は@S2Aspect アノテーションでも設定することができます。 次の例では、DaoクラスのfindByIdメソッドにTraceInterceptorをAspectしています。

<?php
class Dao {
    /**
     * S2Aspect('new seasar\aop\interceptor\TraceInterceptor')
     */
    public function findById($id) {
        return 2009;
    }
}

次のような、Actionクラスを作成します。Daoコンポーネントを受け取るsetDaoセッターメソッドを実装します。 ActionクラスのgetByIdメソッドでは、DaoクラスのfindByIdメソッドを用いて処理を実行します。

<?php
/**
 * @S2Component('name' => 'act')
 */
class Action{
    private $dao = null;
    public function setDao(Dao $dao) {
        $this->dao = $dao;
    }
    public function getById() {
        return $this->dao->findById(10);
    }
}

s2get関数でActionコンポーネントを取得しgetByIdメソッドを実行すると、Daoクラスの findByIdメソッドが実行された際のトレースログが出力されます。

require_once('S2Container.php');

s2import(dirname(__FILE__) . '/classes');
$action = s2get('Action');
$action->getById();
[注意]NOTE

このExampleは examples/quickstart/quickstart040.php にあります。



© Copyright The Seasar Foundation and the others 2005-2010, all rights reserved.