5.4. Annotation API リファレンス

seasar\util\Annotation は、クラスに記述されたコメントや定数値をアノテーションとして読み込みます。 読み込んだ文字列は配列のExpressionとしてeval関数で処理します。
例として、次のようなアノテーションが記述されたサービスクラスを作成します。

/**
 * @Sample('name' => 'seasar')
 */
class Service {
    const SAMPLE = '"name" => "seasar.php"';
}

アノテーションを取得する実行スクリプトは次のようになります。

<?php
require_once('S2Container/S2Container.php');
use seasar\container\S2ApplicationContext as s2app;
s2app::import(dirname(__FILE__) . '/classes');

$service = new \ReflectionClass('Service');

$annotation = \seasar\util\Annotation::get($service, '@Sample');
print_r($annotation);

$annotation = \seasar\util\Annotation::get($service, 'SAMPLE');
print_r($annotation);

上記スクリプトを実行すると、コメントアノテーションと定数アノテーションで記述した値を配列値として取得できます。

% php example.php
Array
(
    [name] => seasar
)
Array
(
    [name] => seasar.php
)
%
[注意]NOTE

このExampleは examples/misc/annotation にあります。


COMMENT設定. 

コメントアノテーションを読み込む設定とします。

seasar\util\Annotation::$COMMENT = true;

CONSTANT設定. 

定数アノテーションを読み込む設定とします。

seasar\util\Annotation::$CONSTANT = true;

Annotation::get メソッド. 

アノテーションを取得します。第1引数には、ReflectionClass、ReflectionMethod、ReflectionPropertyを指定します。 クラスアノテーションまたは定数アノテーションを取得する場合はReflectionClassを渡します。メソッドアノテーションを取得する場合は ReflectionMethod、プロパティアノテーションを取得する場合はReflectionPropertyを渡します。

/**
 * @param ReflectionClass|ReflectionMethod|ReflectionProperty $reflection
 * @param string $annotation
 * @return array
 * @throw seasar\exception\AnnotationNotFoundException
 */
publi static function get($reflection, $annotation)

Annotation::has メソッド. 

アノテーションが記述されているかを取得します。第1引数には、ReflectionClass、ReflectionMethod、ReflectionPropertyを指定します。 クラスアノテーションまたは定数アノテーションを調べる場合はReflectionClassを渡します。メソッドアノテーションを調べる場合は ReflectionMethod、プロパティアノテーションを調べる場合はReflectionPropertyを渡します。

/**
 * @param ReflectionClass|ReflectionMethod|ReflectionProperty $reflection
 * @param string $annotation
 * @return boolean
 */
publi static function has($reflection, $annotation)


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