如果条件,phing嵌套

时间:2010-03-26 00:31:16

标签: deployment ant phing

我无法理解有关给定<if>标记的多个条件的Phing文档。它意味着除非您使用<and>标记,否则您不能拥有多个条件,但没有关于如何使用它的示例。因此,我嵌套了两个<if>标签,但是当我知道有更好的方法时,我觉得很傻。有谁知道我如何使用<and>标签来完成以下任务:

  <if><equals arg1="${deployment.host.type}" arg2="unrestricted" /><then>
    <if><equals arg1="${db.adapter}" arg2="PDO_MYSQL"/><then>
      <!-- Code Here -->
    </then></if>
  </then></if>

我发现没有人对此有过任何经验,这让我感到非常惊讶。 Phing是用PHP代替Java的'ANT'构建工具的实现。对于缺乏简单而强大的部署工具的PHP开发人员来说,它非常有用。 Java能够将自包含的Web项目打包到单个文件中,或者将多个Web项目文件打包成更大的文件,这是一项了不起的功能。 ANT或Phing并没有让PHP达到这一点,但它在正确的方向上迈出了明确的一步,并且比GNU Make更容易理解和使用,这已经或者将会是。

1 个答案:

答案 0 :(得分:6)

根据the Phing documentation

  

&lt;或&gt; element没有任何属性,接受任意数量的条件作为嵌套元素。如果至少有一个包含的条件是条件,则条件将按照在构建文件中指定的顺序进行评估。

起初可能听起来很混乱,特别是没有方便的例子,但要注意的关键词是“接受任意数量的条件作为嵌套元素”。如果您尝试使用以下构建代码段,则应该很容易实现如何使用&lt;或&gt;和&lt;和&gt;条件:

<if>
    <or>
        <equals arg1="foo" arg2="bar" />
        <equals arg1="baz" arg2="baz" />
    </or>
    <then>
        <echo message="Foo equals bar, OR baz equals baz!" />
    </then>
</if>

<if>
    <or>
        <equals arg1="foo" arg2="bar" />
        <equals arg1="baz" arg2="bam" />
    </or>
    <then>
        <echo message="Foo equals bar, OR baz equals baz!" />
    </then>
    <else>
        <echo message="No match to OR found." />
    </else>
</if>
<fail />