詳しくはphing iftaskのconditions
4638 ワード
iftaskは条件をテストし、その真偽に基づいて相応の動作を実行する.それ自体はよく理解されています.
実際にこのtaskを使っているときに一番面倒なのはテスト条件をどう書くかで、マニュアルは私を第5章Conditonsの一節に導いたが、本節は本当に簡単で、具体的な例はない.
以下、マニュアルの説明に合わせて、これらの条件の使用を詳しく説明し、例を添付します.
not
要素は、条件の結果を逆にする別の条件を埋め込む必要があります.属性値はありません.
and要素には属性がなく、複数の条件を受け入れることができます.含まれる条件がすべて真である場合、結果は真です.
or要素には属性がなく、複数の条件を受け入れることができます.含まれる条件の1つが真である場合、結果は真です.条件テストの順序は、コンストラクションファイルに表示される順序と一致します.
解説:
プログラミング言語を知っている場合は、if文の&&(と),|(または),!(非)理解すればいい.
これらは、条件を逆にしたり、条件のセットを接続したりするために使用されます.次にeuqals要素と組み合わせて使用例を示します.
equalsは、2つの与えられた文字列が同じかどうかをテストします.
ツールバーの
意味を含む
必要かどうか
arg1
測定対象文字列1
はい
arg2
測定待ち
文字列2
はい
casesensitive
大文字と小文字が敏感かどうか、デフォルトtrue
いいえ
trim
パラメータの両側の空白文字を削除し、デフォルトfalse
いいえ
例:test.xml
phing-f testを実行する.xml、結果:
example 2は、if(!($a="a"|$b="22"))を判定することに相当する.
os
現在のオペレーティングシステムが指定された値であるかどうかをテストします.
ツールバーの
意味を含む
必要かどうか
family
望ましいOS名
はい
ファミリーのオプション値は、次の3つです.
Windows(すべてのマイクロソフトWindowsバージョン)
mac(すべてのアップルシステム)
Unix(すべてのUnixおよび類似システム)
例:
isset
与えられたproperty値が設定されているかどうかをテストします
ツールバーの
意味を含む
必要かどうか
property
テスト対象property名
はい
contains
1つの文字列に別のサブ列が含まれているかどうかをテストします.
ツールバーの
意味を含む
必要かどうか
string
しゅれつ
はい
substring
サブストリング
はい
casesensitive
大文字と小文字が敏感かどうか、デフォルトtrue
いいえ
例:
istrue
文字列がtrueであるかどうかをテストします.
ツールバーの
意味を含む
必要かどうか
value
測定値
はい
説明:
空、false、0はfalseを得て、その他の文字列はtrueに相当します.
たとえば、結果はtrueです.
isfalse
文字列が本物でないかどうかをテストします.
ツールバーの
意味を含む
必要かどうか
value
測定値
はい
例:
referenceexists
リファレンスが存在するかどうかをテスト
ツールバーの
意味を含む
必要かどうか
ref
テスト対象の参照
はい
例:
available
条件はavailable taskです.core taskのavailableTaskを参照してください.
例:ファイルが存在するかどうかをテストする
実際にこのtaskを使っているときに一番面倒なのはテスト条件をどう書くかで、マニュアルは私を第5章Conditonsの一節に導いたが、本節は本当に簡単で、具体的な例はない.
以下、マニュアルの説明に合わせて、これらの条件の使用を詳しく説明し、例を添付します.
not
and
or
解説:
プログラミング言語を知っている場合は、if文の&&(と),|(または),!(非)理解すればいい.
これらは、条件を逆にしたり、条件のセットを接続したりするために使用されます.次にeuqals要素と組み合わせて使用例を示します.
equalsは、2つの与えられた文字列が同じかどうかをテストします.
ツールバーの
意味を含む
必要かどうか
arg1
測定対象文字列1
はい
arg2
測定待ち
文字列2
はい
casesensitive
大文字と小文字が敏感かどうか、デフォルトtrue
いいえ
trim
パラメータの両側の空白文字を削除し、デフォルトfalse
いいえ
例:test.xml
<project name="test" default="test">
<property name="a" value="1"/>
<property name="b" value="22"/>
<target name="test">
<!--example 1-->
<if>
<and>
<equals arg1="${a}" arg2="1"/>
<equals arg1="${b}" arg2="22"/>
</and>
<then>
<echo msg="it's and test.result is true"/>
</then>
<else>
<echo msg="it's and test.result is false"/>
</else>
</if>
<!--example 2-->
<if>
<not>
<or>
<equals arg1="${a}" arg2="a"/>
<equals arg1="${b}" arg2="22"/>
</or>
</not>
<then>
<echo msg="it's not or test.result is true"/>
</then>
<else>
<echo msg="it's not or test.result is false"/>
</else>
</if>
</target>
</project>
phing-f testを実行する.xml、結果:
test > test:
[echo] it's and test.result is true
[echo] it's not or test.result is false
BUILD FINISHED
Total time: 0.2075 seconds
example 1は、if($a="1"&$b="22")を判定することに相当する.example 2は、if(!($a="a"|$b="22"))を判定することに相当する.
os
現在のオペレーティングシステムが指定された値であるかどうかをテストします.
ツールバーの
意味を含む
必要かどうか
family
望ましいOS名
はい
ファミリーのオプション値は、次の3つです.
Windows(すべてのマイクロソフトWindowsバージョン)
mac(すべてのアップルシステム)
Unix(すべてのUnixおよび類似システム)
例:
project name="test" default="test">
<target name="test">
<if>
<os family="unix" />
<then>
<echo msg="it's unix"/>
</then>
<else>
<echo msg="it's nothing"/>
</else>
</if>
</target>
</project>
isset
与えられたproperty値が設定されているかどうかをテストします
ツールバーの
意味を含む
必要かどうか
property
テスト対象property名
はい
contains
1つの文字列に別のサブ列が含まれているかどうかをテストします.
ツールバーの
意味を含む
必要かどうか
string
しゅれつ
はい
substring
サブストリング
はい
casesensitive
大文字と小文字が敏感かどうか、デフォルトtrue
いいえ
例:
<project name="test" default="test">
<target name="test">
<if>
<contains string="my name is ball" substring="ball"/>
<then>
<echo msg="get it"/>
</then>
</if>
</target>
</project>
istrue
文字列がtrueであるかどうかをテストします.
ツールバーの
意味を含む
必要かどうか
value
測定値
はい
説明:
空、false、0はfalseを得て、その他の文字列はtrueに相当します.
たとえば
isfalse
文字列が本物でないかどうかをテストします.
ツールバーの
意味を含む
必要かどうか
value
測定値
はい
例:
<isfalse value="${someproperty}"/>
<isfalse value="false"/>
referenceexists
リファレンスが存在するかどうかをテスト
ツールバーの
意味を含む
必要かどうか
ref
テスト対象の参照
はい
例:
<referenceexists ref="${someid}"/>
available
条件はavailable taskです.core taskのavailableTaskを参照してください.
例:ファイルが存在するかどうかをテストする
<if>
<available file="${releaseDir}/WEB-INF/entry.php-dist" type="file"/>
<then>
<move file="${releaseDir}/WEB-INF/entry.php-dist" tofile="${releaseDir}/WEB-INF/entry.php" overwrite="true" />
</then>
</if>