| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <sect1 id="zend.console.getopt.fetching">
- <title>Fetching Options and Arguments</title>
- <para>
- After you have declared the options that the
- <classname>Zend_Console_Getopt</classname> object should recognize, and supply
- arguments from the command-line or an array, you can
- query the object to find out which options were specified by a user in
- a given command-line invocation of your program. The class implements
- magic methods so you can query for options by name.
- </para>
- <para>
- The parsing of the data is deferred until the first query you make
- against the <classname>Zend_Console_Getopt</classname> object to find out if an
- option was given, the object performs its parsing. This allows you to
- use several method calls to configure the options, arguments, help
- strings, and configuration options before parsing takes place.
- </para>
- <sect2 id="zend.console.getopt.fetching.exceptions">
- <title>Handling Getopt Exceptions</title>
- <para>
- If the user gave any invalid options on the command-line,
- the parsing function throws a <classname>Zend_Console_Getopt_Exception</classname>.
- You should catch this exception in your application code.
- You can use the <methodname>parse()</methodname> method to force the object
- to parse the arguments. This is useful because you can invoke
- <methodname>parse()</methodname> in a <emphasis>try</emphasis> block. If it passes,
- you can be sure that the parsing won't throw an exception again.
- The exception thrown has a custom method <methodname>getUsageMessage()</methodname>,
- which returns as a string the formatted set of usage messages for
- all declared options.
- </para>
- <example id="zend.console.getopt.fetching.exceptions.example">
- <title>Catching Getopt Exceptions</title>
- <programlisting language="php"><![CDATA[
- try {
- $opts = new Zend_Console_Getopt('abp:');
- $opts->parse();
- } catch (Zend_Console_Getopt_Exception $e) {
- echo $e->getUsageMessage();
- exit;
- }
- ]]></programlisting>
- </example>
- <para>
- Cases where parsing throws an exception include:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Option given is not recognized.
- </para>
- </listitem>
- <listitem>
- <para>
- Option requires a parameter but none was given.
- </para>
- </listitem>
- <listitem>
- <para>
- Option parameter is of the wrong type.
- E.g. a non-numeric string when an integer
- was required.
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
- <sect2 id="zend.console.getopt.fetching.byname">
- <title>Fetching Options by Name</title>
- <para>
- You can use the <methodname>getOption()</methodname> method to query the value
- of an option. If the option had a parameter, this method returns
- the value of the parameter. If the option had no parameter but
- the user did specify it on the command-line, the method returns
- <constant>TRUE</constant>. Otherwise the method returns <constant>NULL</constant>.
- </para>
- <example id="zend.console.getopt.fetching.byname.example.setoption">
- <title>Using getOption()</title>
- <programlisting language="php"><![CDATA[
- $opts = new Zend_Console_Getopt('abp:');
- $b = $opts->getOption('b');
- $p_parameter = $opts->getOption('p');
- ]]></programlisting>
- </example>
- <para>
- Alternatively, you can use the magic <methodname>__get()</methodname> function
- to retrieve the value of an option as if it were a class member
- variable. The <methodname>__isset()</methodname> magic method is also
- implemented.
- </para>
- <example id="zend.console.getopt.fetching.byname.example.magic">
- <title>Using __get() and __isset() Magic Methods</title>
- <programlisting language="php"><![CDATA[
- $opts = new Zend_Console_Getopt('abp:');
- if (isset($opts->b)) {
- echo "I got the b option.\n";
- }
- $p_parameter = $opts->p; // null if not set
- ]]></programlisting>
- </example>
- <para>
- If your options are declared with aliases, you may use any of the
- aliases for an option in the methods above.
- </para>
- </sect2>
- <sect2 id="zend.console.getopt.fetching.reporting">
- <title>Reporting Options</title>
- <para>
- There are several methods to report the full set of
- options given by the user on the current command-line.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- As a string: use the <methodname>toString()</methodname> method. The options
- are returned as a space-separated string of <command>flag=value</command>
- pairs. The value of an option that does not have a parameter
- is the literal string "<constant>TRUE</constant>".
- </para>
- </listitem>
- <listitem>
- <para>
- As an array: use the <methodname>toArray()</methodname> method. The options
- are returned in a simple integer-indexed array of strings, the flag
- strings followed by parameter strings, if any.
- </para>
- </listitem>
- <listitem>
- <para>
- As a string containing <acronym>JSON</acronym> data: use the
- <methodname>toJson()</methodname> method.
- </para>
- </listitem>
- <listitem>
- <para>
- As a string containing <acronym>XML</acronym> data: use the
- <methodname>toXml()</methodname> method.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- In all of the above dumping methods, the flag string is the
- first string in the corresponding list of aliases. For example,
- if the option aliases were declared like <command>verbose|v</command>,
- then the first string, <command>verbose</command>, is used as the
- canonical name of the option. The name of the option flag does not
- include any preceding dashes.
- </para>
- </sect2>
- <sect2 id="zend.console.getopt.fetching.remainingargs">
- <title>Fetching Non-option Arguments</title>
- <para>
- After option arguments and their parameters have been
- parsed from the command-line, there may be additional arguments
- remaining. You can query these arguments using the
- <methodname>getRemainingArgs()</methodname> method. This method returns
- an array of the strings that were not part of any options.
- </para>
- <example id="zend.console.getopt.fetching.remainingargs.example">
- <title>Using getRemainingArgs()</title>
- <programlisting language="php"><![CDATA[
- $opts = new Zend_Console_Getopt('abp:');
- $opts->setArguments(array('-p', 'p_parameter', 'filename'));
- $args = $opts->getRemainingArgs(); // returns array('filename')
- ]]></programlisting>
- </example>
- <para>
- <classname>Zend_Console_Getopt</classname> supports the <acronym>GNU</acronym>
- convention that an argument consisting of a double-dash signifies the end of
- options. Any arguments following this signifier must be treated as
- non-option arguments. This is useful if you might have a non-option
- argument that begins with a dash.
- For example: "<command>rm -- -filename-with-dash</command>".
- </para>
- </sect2>
- </sect1>
|