<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 15156 -->
<sect1 id="zend.console.getopt.rules">
    <title>Getopt の規則の宣言</title>
    <para>
        <classname>Zend_Console_Getopt</classname> クラスのコンストラクタは、
        ひとつから三つの引数を指定します。最初の引数では、
        このアプリケーションでサポートするオプションを宣言します。
        このクラスは、オプションを宣言するためのもうひとつの構文もサポートしています。
        以下の節で、これらの構文についての書式や使用法を参照ください。
    </para>
    <para>
        コンストラクタには、さらに二つの引数を指定します。
        これらはオプションです。二番目の引数に指定するのは
        コマンドライン引数です。デフォルトは
        <code>$_SERVER['argv']</code> となります。
    </para>
    <para>
        コンストラクタの三番目の引数には、設定オプションを指定します。
        これで <classname>Zend_Console_Getopt</classname> の振る舞いを変更します。
        使用可能なオプションについては
        <link linkend="zend.console.getopt.configuration.config">設定の追加</link>
        を参照ください。
    </para>

    <sect2 id="zend.console.getopt.rules.short">
        <title>短い形式のオプションの宣言</title>
        <para>
            <classname>Zend_Console_Getopt</classname> は、GNU Getopt
            と似た形式のコンパクトな構文をサポートしています
            (<ulink url="http://www.gnu.org/software/libc/manual/html_node/Getopt.html">http://www.gnu.org/software/libc/manual/html_node/Getopt.html</ulink>
            を参照ください)。
            この構文は、一文字のフラグでのみ使用できます。
            アプリケーションでサポートするフラグに対応する文字を、
            ひとつの文字列にまとめてで指定します。
            文字の後ろにコロン ("<code>:</code>") を続けると、
            そのフラグがパラメータを要求することを表します。
        </para>
        <example id="zend.console.getopt.rules.short.example">
            <title>短い形式の構文の使用</title>
            <programlisting role="php"><![CDATA[
$opts = new Zend_Console_Getopt('abp:');
]]></programlisting>
        </example>
        <para>
            上の例は、<classname>Zend_Console_Getopt</classname> を用いて、
            使用するオプションを "<code>-a</code>" や
            "<code>-b</code>" あるいは "<code>-p</code>" と宣言するものです。
            最後のフラグにはパラメータが必要となります。
        </para>
        <para>
            短い構文が使用できるのは、一文字のフラグに限られます。
            エイリアスやパラメータ型、ヘルプ文字列は短い構文ではサポートしません。
        </para>
    </sect2>

    <sect2 id="zend.console.getopt.rules.long">
        <title>長い形式のオプションの宣言</title>
        <para>
            より高機能な別の構文もサポートしています。この構文では、
            フラグにエイリアスを設定したりオプションパラメータの型を指定したり、
            ユーザに対して使用法を示すヘルプ文字列を指定したりもできます。
            短い構文のオプションを宣言する場合には文字列を使用しましたが、
            長い構文の場合は連想配列を使用します。
            これをコンストラクタの最初の引数として指定します。
        </para>
        <para>
            連想配列の各要素のキーは、フラグの名前とエイリアスをパイプ記号
            ("<code>|</code>") で連結した文字列となります。
            そのオプションがパラメータを必要とする場合は、
            フラグに続けて等号 ("<code>=</code>") を書き、
            その後にパラメータの型を表す文字を続けます。
        </para>
        <itemizedlist>
            <listitem>
                <para>
                    "<code>=s</code>" は文字列パラメータを表します。
                </para>
            </listitem>
            <listitem>
                <para>
                    "<code>=w</code>" はワードパラメータ
                    (空白を含まない文字列) を表します。
                </para>
            </listitem>
            <listitem>
                <para>
                    "<code>=i</code>" は整数パラメータを表します。
                </para>
            </listitem>
        </itemizedlist>
        <para>
            そのパラメータがオプションである場合は、等号の代わりにダッシュ
            ("<code>-</code>") を使用します。
        </para>
        <para>
            連想配列の各要素の値は、ヘルプ文字列を表します。これは、
            ユーザに対してプログラムの使用法を説明するものです。
        </para>
        <example id="zend.console.getopt.rules.long.example">
            <title>長い形式の構文の使用</title>
            <programlisting role="php"><![CDATA[
$opts = new Zend_Console_Getopt(
  array(
    'apple|a'    => 'リンゴです。パラメータは不要です。',
    'banana|b=i' => 'バナナです。整数パラメータが必須です。',
    'pear|p-s'   => '洋ナシです。オプションで文字列パラメータを指定します。'
  )
);
]]></programlisting>
        </example>
        <para>
            上の例では、三種類のオプションを宣言しています。
            "<code>--apple</code>" および "<code>-a</code>" は同じ意味を持つエイリアスで、
            このオプションはパラメータを受け取りません。
            "<code>--banana</code>" および "<code>-b</code>" は同じ意味を持つエイリアスで、
            このオプションには整数値のパラメータが必須となります。
            最後に "<code>--pear</code>" および "<code>-p</code>" は同じ意味を持つエイリアスで、
            このオプションには任意で文字列のパラメータを指定することができます。
        </para>
    </sect2>

</sect1>
