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