我引用了the documentation并尝试了这个 -
<php function="empty" returnProperty="productionSameAsExpectedBranch">
<param value="${productionDeviationFromExpectedBranch}"/>
</php>
但它给出了错误 -
[php]调用PHP函数:empty()[PHP错误] call_user_func_array()期望参数1是有效的回调,函数'空'未找到或函数名无效[/ usr / share / pear / phing / tasks第125行/system/PhpEvalTask.php]
我正在使用这样的结构:
<if>
<or>
<not><isset property="productionSameAsExpectedBranch" /></not>
<and>
<isset property="productionSameAsExpectedBranch" />
<equals arg1="${productionSameAsExpectedBranch}" arg2="" />
</and>
</or>
<then>
<!-- it is not set or empty -->
<!--property name="productionSameAsExpectedBranch" value="something" override="true" /-->
</then>
<else />
</if>
我会使用isfalse
条件来检查字符串是否为空。
<target name="empty-string">
<property name="productionSameAsExpectedBranch" value=""/>
<if>
<isfalse value="${productionSameAsExpectedBranch}"/>
<then>
<echo>Property is string empty, do something!</echo>
</then>
</if>
</target>
注意我首先将productionSameAsExpectedBranch
设置为空字符串,我这样做是为了避免不存在的属性。如果已存在,则不会覆盖该属性。
这是有效的,因为内部isfalse
使用PHP的转换。
另一个解决方案是使用matches条件和空行模式,如:
<target name="empty-string">
<property name="productionSameAsExpectedBranch" value=""/>
<if>
<matches string="${productionSameAsExpectedBranch}" pattern="^$"/>
<then>
<echo>Property is string empty, do something!</echo>
</then>
</if>
</target>