2010-03-26 11 views
4

je vais avoir du mal à comprendre la documentation Phing concernant plusieurs conditions pour une étiquette <if> donnée. Cela implique que vous ne pouvez pas avoir plusieurs conditions, sauf si vous utilisez la balise <and>, mais il n'y a aucun exemple d'utilisation. Par conséquent, j'ai imbriqué deux étiquettes <if>, mais je me sens idiot de le faire quand je sais qu'il y a une meilleure façon. Est-ce que quelqu'un sait comment je peux utiliser la balise <and> pour accomplir ce qui suit:phing imbriquées si les conditions

<if><equals arg1="${deployment.host.type}" arg2="unrestricted" /><then> 
    <if><equals arg1="${db.adapter}" arg2="PDO_MYSQL"/><then> 
     <!-- Code Here --> 
    </then></if> 
    </then></if> 

Je trouve très surprenant que personne n'a eu une expérience avec cela. Phing est une implémentation de l'outil de construction 'ANT' en PHP au lieu de Java. C'est très utile pour les développeurs PHP qui ne disposent pas d'un outil de déploiement simple et puissant. la capacité de Java pour emballer des projets web autonome dans un seul fichier ou package plusieurs fichiers de projet web dans un fichier encore plus grand est une capacité étonnante. ANT ou Phing ne pas obtenir PHP à ce moment-là, mais son un pas dans la bonne direction et pas de géant plus facile à comprendre et à utiliser que GNU Make a jamais été ou sera.

Répondre

6

Selon the Phing documentation:

L'élément <ou> n'a pas d'attributs et accepte un nombre arbitraire de conditions comme des éléments imbriqués. Cette condition est vraie si au moins l'une de ses conditions est remplie, les conditions seront évaluées dans l'ordre dans lequel elles ont été spécifiées dans le fichier de construction.

Il peut sembler déroutant au premier abord, en particulier sans exemples pratiques disponibles, mais les mots-clés sont à noter, « accepte un nombre arbitraire de conditions comme des éléments imbriqués. » Si vous essayez la construction suivante extrait de code, vous devriez facilement se rendre compte comment utiliser <ou> et <et> conditions:

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

Je vois maintenant - je vous remercie. Je pense que les développeurs de Phing devraient faire bien d'inclure cela dans la documentation. Pathétiquement, je pense avoir essayé toutes les combinaisons imaginables MAIS celle-ci. :) –