如果条件,phing嵌套

4 ant phing deployment

我无法理解有关给定<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>
Run Code Online (Sandbox Code Playgroud)

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

小智 6

根据Phing文档:

<或>元素没有任何属性,并且接受任意数量的条件作为嵌套元素.如果至少有一个包含的条件是条件,则条件将按照它们在构建文件中指定的顺序进行评估.

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

<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 />
Run Code Online (Sandbox Code Playgroud)