我提到the documentation并尝试了这个 -
<php function="empty" returnProperty="productionSameAsExpectedBranch">
<param value="${productionDeviationFromExpectedBranch}"/>
</php>
但它给出了错误 -
[php]调用PHP函数:empty() [PHP错误] call_user_func_array()期望参数1是有效的回调,函数“空”&#39;未找到或无效的函数名称[/usr/share/pear/phing/tasks/system/PhpEvalTask.php第125行]
答案 0 :(得分:2)
我正在使用这样的结构:
<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>
答案 1 :(得分:0)
我将使用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的转换。
答案 2 :(得分:0)
另一种解决方案是将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>