4

我无法理解有关给定<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 过去或将来更容易理解和使用。

4

1 回答 1

6

根据Phing 文档

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

起初可能听起来令人困惑,尤其是没有可用的方便示例,但要注意的关键字是“接受任意数量的条件作为嵌套元素”。如果您尝试以下构建片段,您应该很容易意识到如何使用 <or> 和 <and> 条件:

<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 />
于 2010-03-30T15:36:34.407 回答