詳しくはphing iftaskのconditions


iftaskは条件をテストし、その真偽に基づいて相応の動作を実行する.それ自体はよく理解されています.
実際にこのtaskを使っているときに一番面倒なのはテスト条件をどう書くかで、マニュアルは私を第5章Conditonsの一節に導いたが、本節は本当に簡単で、具体的な例はない.
以下、マニュアルの説明に合わせて、これらの条件の使用を詳しく説明し、例を添付します.
not
要素は、条件の結果を逆にする別の条件を埋め込む必要があります.属性値はありません.
and要素には属性がなく、複数の条件を受け入れることができます.含まれる条件がすべて真である場合、結果は真です.
or要素には属性がなく、複数の条件を受け入れることができます.含まれる条件の1つが真である場合、結果は真です.条件テストの順序は、コンストラクションファイルに表示される順序と一致します.
解説:
プログラミング言語を知っている場合は、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に相当します.
たとえば、結果は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>