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