Zend_Console_Getopt-Fetching.xml 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20765 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.console.getopt.fetching">
  5. <title>Holen von Optionen und Argumenten</title>
  6. <para>
  7. Nach dem Erstellen der Optionen welche das
  8. <classname>Zend_Console_Getopt</classname>
  9. Objekt erkennen sollte, und der Übergabe von Argumenten von der
  10. Kommandozeile oder einem Array, kann das Objekt abgefragt werden um
  11. herauszufinden welche Optionen durch den Benutzer mit einem gegebenen
  12. Kommandozeilena Aufruf des Programms angegeben wurden. Die Klasse
  13. implementiert magische Methoden damit Optionen anhand Ihres Namens
  14. abgefragt werden können.
  15. </para>
  16. <para>
  17. Das Analysieren der Daten wird verzögert, bis zur ersten Abfrage die
  18. am
  19. <classname>Zend_Console_Getopt</classname>
  20. Objekt durchgeführt wird um herauszufinden
  21. ob eine Option angegeben wurde. Das erlaubt die Anwendung einiger
  22. Methodenaufrufe zur Konfiguration der Optionen, Argumente, Hilfstexte
  23. und
  24. Konfigurationsoptionen bevor das Analysieren durchgeführt wird.
  25. </para>
  26. <sect2 id="zend.console.getopt.fetching.exceptions">
  27. <title>Handhaben von Getopt Ausnahmen</title>
  28. <para>
  29. Wenn ein Benutzer irgendeine ungültige Option auf der Kommandozeile
  30. angibt, wirft die analysierende Funktion eine
  31. <classname>Zend_Console_Getopt_Exception</classname>
  32. . Diese Ausnahme kann im
  33. Code der Anwendung abgefangen werden. Die
  34. <methodname>parse()</methodname>
  35. Methode
  36. kann verwendet werden um das Objekt dazu zu zwingen die Argumente zu
  37. analysieren. Das ist deswegen nützlich weil
  38. <methodname>parse()</methodname>
  39. in
  40. einen
  41. <emphasis>try</emphasis>
  42. Block eingebettet werden kann. Wenn es erfolgreich
  43. ist, kann man sicher sein das die Analyse keine weiteren Ausnahmen werfen
  44. wird. Die geworfene Ausnahme hat eine eigene Methode
  45. <methodname>getUsageMessage()</methodname>
  46. , welche die formatierten Hinweise für die
  47. Verwendung aller definierten Optionen zurückgibt.
  48. </para>
  49. <example id="zend.console.getopt.fetching.exceptions.example">
  50. <title>Getopt Ausnahmen auffangen</title>
  51. <programlisting language="php"><![CDATA[
  52. try {
  53. $opts = new Zend_Console_Getopt('abp:');
  54. $opts->parse();
  55. } catch (Zend_Console_Getopt_Exception $e) {
  56. echo $e->getUsageMessage();
  57. exit;
  58. }
  59. ]]></programlisting>
  60. </example>
  61. <para>
  62. Die Fälle in denen die Analyse eine Ausnahme werden sind unter anderem:
  63. </para>
  64. <itemizedlist>
  65. <listitem>
  66. <para>
  67. Die gegebene Option wird nicht erkannt.
  68. </para>
  69. </listitem>
  70. <listitem>
  71. <para>
  72. Die Option benötigt einen Parameter, aber es wurde keiner angegeben.
  73. </para>
  74. </listitem>
  75. <listitem>
  76. <para>
  77. Der Parameter der Option ist vom falschen Typ.
  78. Z.B. eine nicht nummerische Zeichenkette obwohl
  79. ein Integer benötigt wird.
  80. </para>
  81. </listitem>
  82. </itemizedlist>
  83. </sect2>
  84. <sect2 id="zend.console.getopt.fetching.byname">
  85. <title>Optionen durch Ihren Namen finden</title>
  86. <para>
  87. Die
  88. <methodname>getOption()</methodname>
  89. Methode kann verwendet werden um den
  90. Wert einer Option abzufragen. Wenn die Option einen Parameter hatte,
  91. wird diese Methode den Wert dieses Parameters zurückgeben. Wenn die
  92. Option keinen Parameter hatte, aber der Benutzer ihn auf der
  93. Kommandozeile definiert hat, gibt die Methode
  94. <constant>TRUE</constant>
  95. zurück.
  96. Andernfalls gibt die Methode
  97. <constant>NULL</constant>
  98. zurück.
  99. </para>
  100. <example id="zend.console.getopt.fetching.byname.example.setoption">
  101. <title>Verwenden von getOption()</title>
  102. <programlisting language="php"><![CDATA[
  103. $opts = new Zend_Console_Getopt('abp:');
  104. $b = $opts->getOption('b');
  105. $p_parameter = $opts->getOption('p');
  106. ]]></programlisting>
  107. </example>
  108. <para>
  109. Alternativ kann die magische
  110. <methodname>__get()</methodname>
  111. Funktion verwendet
  112. werden um der Wert einer Option zu erhalten wie wenn dieser eine
  113. Variable der Klasse wäre. Die magische
  114. <methodname>__isset()</methodname>
  115. Methode
  116. ist auch implementiert.
  117. </para>
  118. <example id="zend.console.getopt.fetching.byname.example.magic">
  119. <title>Verwenden der magischen __get() und __isset() Methoden</title>
  120. <programlisting language="php"><![CDATA[
  121. $opts = new Zend_Console_Getopt('abp:');
  122. if (isset($opts->b)) {
  123. echo "Die Option b ist da.\n";
  124. }
  125. $p_parameter = $opts->p; // Null wenn nicht gesetzt
  126. ]]></programlisting>
  127. </example>
  128. <para>
  129. Wenn die Optionen mit Aliasen definiert wurden, kann jeder der Aliase für
  130. eine Option in den obigen Methoden verwendet werden.
  131. </para>
  132. </sect2>
  133. <sect2 id="zend.console.getopt.fetching.reporting">
  134. <title>Optionen berichten</title>
  135. <para>
  136. Es gibt einige Methoden um das komplette Set an Optionen
  137. welches ein Benutzer an der Kommandozeile angegeben hat zu berichten.
  138. </para>
  139. <itemizedlist>
  140. <listitem>
  141. <para>
  142. Als Zeichenkette: verwenden der
  143. <methodname>toString()</methodname>
  144. Methode.
  145. Die Optionen werden als Leerzeichen-getrennte Zeichenkette von
  146. <command>Flag=Wert</command>
  147. Paaren zurückgegeben. Der Wert einer Option
  148. welche keinen Parameter hat, ist die wörtliche Zeichenkette
  149. "
  150. <constant>TRUE</constant>
  151. ".
  152. </para>
  153. </listitem>
  154. <listitem>
  155. <para>
  156. Als Array: verwenden der
  157. <methodname>toArray()</methodname>
  158. Methode. Die
  159. Optionen werden in einem einfachen Integer-Indizierten Array von
  160. Zeichenketten
  161. zurückgegeben, die Flag-Zeichenketten gefolgt von den
  162. Parameter-Zeichenketten, wenn vorhanden.
  163. </para>
  164. </listitem>
  165. <listitem>
  166. <para>
  167. Als Zeichenkette welche
  168. <acronym>JSON</acronym>
  169. Daten enthält: verwenden der
  170. <methodname>toJson()</methodname>
  171. Methode.
  172. </para>
  173. </listitem>
  174. <listitem>
  175. <para>
  176. Als Zeichenkette welche
  177. <acronym>XML</acronym>
  178. Daten enthält: verwenden der
  179. <methodname>toXml()</methodname>
  180. Methode.
  181. </para>
  182. </listitem>
  183. </itemizedlist>
  184. <para>
  185. In allen obigen Auflistungsmethoden, ist die Flag-Zeichenkette die
  186. erste Zeichenkette
  187. in der entsprechenden Liste von Aliasen. Wenn zum Beispiel die Aliase
  188. der Option als
  189. <command>verbose|v</command>
  190. definiert sind, wird die erste Zeichenkette
  191. <command>verbose</command>
  192. als kanonischer Name der Option verwendet. Der Name des
  193. Optionsflags enthält nicht die vorangestellten Bindestriche.
  194. </para>
  195. </sect2>
  196. <sect2 id="zend.console.getopt.fetching.remainingargs">
  197. <title>Nicht-Options Argumente erhalten</title>
  198. <para>
  199. Nachdem die Argumente der Option und deren Parameter von der
  200. Kommandozeile analysiert
  201. wurden, können zusätzliche Argumente zurück bleiben. Diese Argumente können
  202. abgefragt
  203. werden durch Verwendung der
  204. <methodname>getRemainingArgs()</methodname>
  205. Methode. Diese
  206. Methode gibt ein Array von Zeichenketten zurück welche nicht Teil
  207. irgendeiner Option
  208. waren.
  209. </para>
  210. <example id="zend.console.getopt.fetching.remainingargs.example">
  211. <title>Verwenden von getRemainingArgs()</title>
  212. <programlisting language="php"><![CDATA[
  213. $opts = new Zend_Console_Getopt('abp:');
  214. $opts->setArguments(array('-p', 'p_parameter', 'filename'));
  215. $args = $opts->getRemainingArgs(); // Rückgabe array('filename')
  216. ]]></programlisting>
  217. </example>
  218. <para>
  219. <classname>Zend_Console_Getopt</classname>
  220. unterstützt die
  221. <acronym>GNU</acronym>
  222. Konvention das ein Argument welches auf einem Doppelten Bindestrich
  223. besteht das Ende
  224. der Optionen bezeichnet. Jedes Argument welches diesem Bezeichner folgt,
  225. muß als
  226. Nicht-Options-Argument behandelt werden. Das ist nützlich wenn ein
  227. Nicht-Options-Argument vorhanden ist welches mit einem Bindestrich anfängt. Zum
  228. Beispiel: "
  229. <command>rm -- -filename-with-dash</command>
  230. ".
  231. </para>
  232. </sect2>
  233. </sect1>