Ant (1.6.5) - Как установить два свойства в одном или

Если вы не используете подготовленные инструкции, попробуйте:

$find = $dbh->query('SELECT count(*) from table');
if ($find->fetchColumn() > 0){
    echo 'found';
}

Однако, если вы выберете подготовленные инструкции, которые я настоятельно рекомендую, тогда:

$find = $dbh->prepare('SELECT count(*) from table');
$find->execute();
if ($find->fetchColumn() > 0){
    echo 'found';
}
13
задан Rich Seller 24 October 2009 в 17:09
поделиться

1 ответ

Есть несколько способов сделать это. Самый простой - просто использовать два оператора condition и воспользоваться преимуществом неизменности свойств:

<condition property="property2" value="string1">
    <isset property="property1"/>
</condition>
<condition property="property3" value="string2">
    <isset property="property1"/>
</condition>

<!-- Properties in ant are immutable, so the following assignments will only
     take place if property1 is *not* set. -->
<property name="property2" value="string2"/>
<property name="property3" value="string1"/>

Это немного громоздко и плохо масштабируется, но только для двух свойств я бы, вероятно, использовал этот подход .

Несколько лучший способ - использовать условную цель:

<target name="setProps" if="property1">
    <property name="property2" value="string1"/>
    <property name="property3" value="string2"/>
</target>

<target name="init" depends="setProps">
    <!-- Properties in ant are immutable, so the following assignments will only
         take place if property1 is *not* set. -->
    <property name="property2" value="string2"/>
    <property name="property3" value="string1"/>

    <!-- Other init code -->
</target>

Здесь мы снова пользуемся преимуществом неизменности свойств. Если вы не хотите этого делать, вы можете использовать атрибут except и дополнительный уровень косвенности:

<target name="-set-props-if-set" if="property1">
    <property name="property2" value="string1"/>
    <property name="property3" value="string2"/>
</target>

<target name="-set-props-if-not-set" unless="property1">
    <property name="property2" value="string2"/>
    <property name="property3" value="string1"/>
</target>

<target name="setProps" depends="-set-props-if-set, -set-props-if-not-set"/>

<target name="init" depends="setProps">
    <!-- Other init code -->
</target>

Важно отметить, что if и , если только атрибуты target проверяют только то, установлено ли свойство, а не значение свойства.

34
ответ дан 1 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: