如何检查phing build xml中的变量是否为空?

时间:2016-03-18 13:23:24

标签: php phing

我提到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行]

3 个答案:

答案 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>