PHP式
PHP式とは、Seasar2のdiconファイルに記述するPHPソースを指します。
diconファイルの<property>要素の他,
<component>要素・<initMethod>要素・<destroyMethod>要素・<arg>要素・
<meta>要素・<aspect>要素にPHP式を記述することができます。
本説明に用いるdiconファイルを使用したサンプルは、s2container.php5/examples/dicon/expression にあります。
arg、property、aspect、metaタグ
コンストラクタ引数やプロパティに設定したい値を返すPHP式を記述します。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
<component name="sample1" class="ArgExp">
<arg>10</arg>
<property name="message">
file_get_contents(EXAMPLE_DIR . '/dicon/expression/ArgSample.txt')
</property>
</component>
<component name="sample2" class="ArgExp">
<arg>2+3</arg>
<property name="message"><![CDATA[
$msg1 = "Hello ";
$msg2 = "World";
return $msg1 . $msg2;
]]></property>
</component>
</components>
PHP式が return を含まない場合は、自動的に return が付加されます。コンポーネント sample1 では、
コンストラクタ引数は以下の式がeval関数で処理されます。
return 10;
messageプロパティは以下の式がeval関数で処理されます。
return file_get_contents(EXAMPLE_DIR . '/dicon/expression/ArgSample.txt');
aspectタグやmetaタグにも同様にPHP式を記述できます。
componentタグ
オブジェクトを返すPHP式を記述します。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
<component name="hello">
new ComponentExp("Hello")
<property name="messageB">"World"</property>
</component>
<component name="hello2" class="ComponentExp">
hello3
</component>
<component name="hello3" class="ComponentExp"/>
</components>
componentタグのクラス属性が指定されている場合は、PHP式で返されたオブジェクトと
ReflectionClass#isSubclassOf 比較を行います。
initMethod、destroyMethodタグ
コンポーネントの初期化、終了時の処理をPHP式で記述します。$component変数により自身を参照できます。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
<component name="method" class="MethodExp">
<initMethod>
$component->init(10)
</initMethod>
</component>
</components>
|