【问题标题】:phing nested if conditionsphing 嵌套 if 条件
【发布时间】:2010-03-30 23:36:34
【问题描述】:

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

【问题讨论】:

    标签: deployment ant phing


    【解决方案1】:

    根据the Phing documentation

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

    一开始可能听起来令人困惑,尤其是在没有方便的示例的情况下,但要注意的关键字是“接受任意数量的条件作为嵌套元素”。如果您尝试以下 build sn-p out,您应该很容易意识到如何使用 条件:

    <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 />
    

    【讨论】:

    • 我现在明白了 - 谢谢。我认为 Phing 的开发人员应该很好地将其包含在文档中。可悲的是,我想我尝试了所有可以想象的组合,但这个组合。 :)
    猜你喜欢
    • 2013-03-29
    • 2010-12-17
    • 2020-02-25
    • 2023-03-08
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多