Zend_Console_Getopt-Fetching.xml 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.console.getopt.fetching">
  5. <title>Extraire les options et les arguments</title>
  6. <para>
  7. Après avoir déclaré les options que l'objet <classname>Zend_Console_Getopt</classname> doit
  8. identifier, et fourni les arguments de la ligne de commande ou un tableau, vous pouvez
  9. interroger l'objet pour connaître les options indiquées par un utilisateur lors d'un appel
  10. à votre programme en ligne de commande. La classe implémente les méthodes magiques ainsi
  11. vous pouvez interroger directement par les noms d'options.
  12. </para>
  13. <para>
  14. L'analyse des données est reportée jusqu'à ce que vous invoquiez pour la première
  15. fois l'objet <classname>Zend_Console_Getopt</classname> pour découvrir si une option était
  16. renseignée, l'objet exécute alors son analyse. Ceci permet plusieurs appels de méthode pour
  17. configurer les options, arguments, messages d'aide, et les options de configuration, avant
  18. que l'analyse ne soit lancée.
  19. </para>
  20. <sect2 id="zend.console.getopt.fetching.exceptions">
  21. <title>Manipuler les exceptions Getopt</title>
  22. <para>
  23. Si l'utilisateur a donné des options invalides sur la ligne de commande, la
  24. fonction d'analyse syntaxique lève une
  25. <classname>Zend_Console_Getopt_Exception</classname>. Vous devrez récupérer cette
  26. exception dans votre code d'application. Vous pouvez utiliser la méthode
  27. <methodname>parse()</methodname> pour forcer l'objet à analyser les arguments. C'est
  28. utile parce que vous pouvez invoquer <methodname>parse()</methodname> dans un bloc
  29. <emphasis>try</emphasis>. S'il passe, vous pouvez être sûrs que l'analyse syntaxique
  30. ne lèvera pas d'exception de nouveau. L'exception est lancée via une méthode
  31. personnalisée <methodname>getUsageMessage()</methodname>, qui retourne comme une
  32. chaîne de caractère l'ensemble formaté des messages d'utilisation pour toutes les
  33. options déclarées.
  34. </para>
  35. <example id="zend.console.getopt.fetching.exceptions.example">
  36. <title>Récupérer une exception Getopt</title>
  37. <programlisting language="php"><![CDATA[
  38. try {
  39. $opts = new Zend_Console_Getopt('abp:');
  40. $opts->parse();
  41. } catch (Zend_Console_Getopt_Exception $e) {
  42. echo $e->getUsageMessage();
  43. exit;
  44. }
  45. ]]></programlisting>
  46. </example>
  47. <para>Les cas, où l'analyse syntaxique lève une exception, incluent&#160;:</para>
  48. <itemizedlist>
  49. <listitem>
  50. <para>L'option passée n'est pas reconnue.</para>
  51. </listitem>
  52. <listitem>
  53. <para>L'option nécessite un paramètre mais aucun n'est fourni.</para>
  54. </listitem>
  55. <listitem>
  56. <para>
  57. Le paramètre d'option n'a pas le bon type. Par exemple, une chaîne de
  58. caractères non-numérique quand un nombre entier a été exigé.
  59. </para>
  60. </listitem>
  61. </itemizedlist>
  62. </sect2>
  63. <sect2 id="zend.console.getopt.fetching.byname">
  64. <title>Extraire les options par nom</title>
  65. <para>
  66. Vous pouvez employer la méthode <methodname>getOption()</methodname> pour connaître la
  67. valeur d'une option. Si l'option avait un paramètre, cette méthode retourne la valeur du
  68. paramètre. Si l'option n'avait aucun paramètre mais que l'utilisateur en indiquait sur
  69. dans la ligne de commande, la méthode retournerait <constant>TRUE</constant>. Sinon la
  70. méthode retournerait <constant>NULL</constant>.
  71. </para>
  72. <example id="zend.console.getopt.fetching.byname.example.setoption">
  73. <title>Utiliser getOption()</title>
  74. <programlisting language="php"><![CDATA[
  75. $opts = new Zend_Console_Getopt('abp:');
  76. $b = $opts->getOption('b');
  77. $p_parameter = $opts->getOption('p');
  78. ]]></programlisting>
  79. </example>
  80. <para>
  81. De manière alternative, vous pouvez employer la fonction magique
  82. <methodname>__get()</methodname> pour rechercher la valeur d'une option comme si
  83. c'était une variable de membre de classe. La méthode magique
  84. <methodname>__isset()</methodname> est également implémentée.
  85. </para>
  86. <example id="zend.console.getopt.fetching.byname.example.magic">
  87. <title>Utiliser les méthodes magiques __get() et __isset()</title>
  88. <programlisting language="php"><![CDATA[
  89. $opts = new Zend_Console_Getopt('abp:');
  90. if (isset($opts->b)) {
  91. echo "J'ai recu l'option b.\n";
  92. }
  93. $p_parameter = $opts->p; // null si non fourni
  94. ]]></programlisting>
  95. </example>
  96. <para>
  97. Si vos options sont déclarées avec des alias, vous pouvez employer n'importe quel
  98. alias de l'option dans les méthodes ci-dessus.
  99. </para>
  100. </sect2>
  101. <sect2 id="zend.console.getopt.fetching.reporting">
  102. <title>Extraire les options</title>
  103. <para>
  104. Il y a plusieurs méthodes pour extraire l'ensemble complet des options fournies
  105. par l'utilisateur dans la ligne de commande courante.
  106. </para>
  107. <itemizedlist>
  108. <listitem>
  109. <para>
  110. Comme pour une chaîne de caractères&#160;: employez la méthode
  111. <methodname>toString()</methodname>. Les options sont retournées sous la
  112. forme d'une chaîne de caractère où les paires <command>drapeau=valeur</command>
  113. sont séparées par des espaces. La valeur d'une option qui n'a pas de paramètre
  114. est la chaîne "<constant>TRUE</constant>".
  115. </para>
  116. </listitem>
  117. <listitem>
  118. <para>
  119. Comme un tableau&#160;: employez la méthode <methodname>toArray()</methodname>.
  120. Les options sont retournées dans un tableau de chaînes de caractères indexé par
  121. des nombres, les chaînes de drapeau sont suivies par les chaînes de paramètres
  122. éventuels.
  123. </para>
  124. </listitem>
  125. <listitem>
  126. <para>
  127. Comme une chaîne au format <acronym>JSON</acronym>&#160;: employez la méthode
  128. <methodname>toJson()</methodname>.
  129. </para>
  130. </listitem>
  131. <listitem>
  132. <para>
  133. Comme une chaîne au format <acronym>XML</acronym>&#160;: employez la méthode
  134. <methodname>toXml()</methodname>.
  135. </para>
  136. </listitem>
  137. </itemizedlist>
  138. <para>
  139. Dans toutes les méthodes de déchargement ci-dessus, la chaîne du drapeau est la
  140. première chaîne dans la liste des alias correspondants. Par exemple, si les noms
  141. d'alias d'option étaient déclarés comme "<command>verbose|v</command>", alors la
  142. première chaîne, "<command>verbose</command>", est employé comme nom de l'option.
  143. Le nom du drapeau d'option n'inclut pas le tiret précédent.
  144. </para>
  145. </sect2>
  146. <sect2 id="zend.console.getopt.fetching.remainingargs">
  147. <title>Extraction des arguments sans option</title>
  148. <para>
  149. Après que les arguments d'option et ainsi que les paramètres de la ligne de
  150. commande ont été analysés, il peut exister des arguments additionnels restants. Vous
  151. pouvez interroger ces arguments en utilisant la méthode
  152. <methodname>getRemainingArgs()</methodname>. Cette méthode renvoie un tableau de chaîne
  153. qui ne fait partie d'aucune option.
  154. </para>
  155. <example id="zend.console.getopt.fetching.remainingargs.example">
  156. <title>Utiliser getRemainingArgs()</title>
  157. <programlisting language="php"><![CDATA[
  158. $opts = new Zend_Console_Getopt('abp:');
  159. $opts->setArguments(array('-p', 'p_parameter', 'nomdefichier'));
  160. $args = $opts->getRemainingArgs(); // retourne array('nomdefichier')
  161. ]]></programlisting>
  162. </example>
  163. <para>
  164. <classname>Zend_Console_Getopt</classname> supporte la convention <acronym>GNU</acronym>
  165. selon laquelle un argument se composant d'un double-tiret signifie la fin des options.
  166. Tous les arguments suivant celui-ci doivent être traités en tant qu'arguments sans
  167. options. C'est utile si vous avez un argument sans options qui commence par
  168. un tiret. Par exemple : "<command>rm -- -nomdefichier-avec-tiret</command>".
  169. </para>
  170. </sect2>
  171. </sect1>