Phing вложенный, если условия - PullRequest
4 голосов
/ 26 марта 2010

У меня проблемы с пониманием документации Phing относительно нескольких условий для данного тега <if>. Это означает, что вы не можете иметь несколько условий, если не используете тег <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 - это реализация инструмента сборки 'ANT' в PHP вместо Java. Это очень полезно для разработчиков PHP, которые испытывают недостаток в простом и мощном инструменте развертывания. Способность Java упаковать автономные веб-проекты в один файл или упаковать несколько файлов веб-проекта в еще больший файл - удивительная возможность. ANT или Phing не дают PHP до этого момента, но это определенный шаг в правильном направлении, и его легче понять и использовать, чем GNU Make когда-либо был или будет.

1 Ответ

6 голосов
/ 30 марта 2010

Согласно Телефонная документация :

Элемент не имеет никаких атрибутов, а принимает произвольное количество условий в качестве вложенных элементов . Это условие истинно, если хотя бы одно из содержащихся в нем условий выполнено, условия будут оцениваться в порядке, который они были указаны в файле сборки.

Поначалу это может показаться странным, особенно при отсутствии удобных примеров, но ключевые слова, на которые следует обратить внимание: «принимает произвольное количество условий как вложенные элементы». Если вы попробуете следующий фрагмент сборки, вы легко поймете, как использовать условия и :

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