<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.console.getopt.configuration">
    <title>Configurer Zend_Console_Getopt</title>

    <sect2 id="zend.console.getopt.configuration.addrules">
        <title>Ajouter des règles d'options</title>

        <para>
            Vous pouvez ajouter de nouvelles règles d'option en complément de celles
            indiquées dans le constructeur de <classname>Zend_Console_Getopt</classname>, en
            utilisant la méthode <methodname>addRules()</methodname>. L'argument
            d'<methodname>addRules()</methodname> est
            identique au premier argument du constructeur de classe. C'est soit une chaîne dans le
            format d'options de syntaxe courte, soit un tableau associatif dans le format
            d'options de syntaxe longue. Voir
            <link linkend="zend.console.getopt.rules">"Déclarer les règles Getopt"</link> pour les
            détails sur la syntaxe de déclaration des options.
        </para>

        <example id="zend.console.getopt.configuration.addrules.example">
            <title>Utilisation d'addRules()</title>

            <programlisting language="php"><![CDATA[
$opts = new Zend_Console_Getopt('abp:');
$opts->addRules(
  array(
    'verbose|v' => 'Print verbose output'
  )
);
]]></programlisting>
        </example>

        <para>
            L'exemple au-dessus montre comment ajouter l'option "<command>--verbose</command>" avec
            l'alias "<command>-v</command>" à un ensemble d'options définies dans l'appel au
            constructeur. Notez que vous pouvez mélanger des options de syntaxe courte et de
            syntaxe longue dans la même instance de <classname>Zend_Console_Getopt</classname>.
        </para>
    </sect2>

    <sect2 id="zend.console.getopt.configuration.addhelp">
        <title>Ajouter des messages d'aide</title>

        <para>
            En plus d'indiquer les messages d'aide en déclarant les règles d'option dans le
            long format, vous pouvez associer des messages d'aide aux règles d'option en utilisant
            la méthode <methodname>setHelp()</methodname>. L'argument de la méthode
            <methodname>setHelp()</methodname> est
            un tableau associatif, dans laquelle la clé est un drapeau, et la valeur est le message
            d'aide correspondant.
        </para>

        <example id="zend.console.getopt.configuration.addhelp.example">
            <title>Utiliser setHelp()</title>

            <programlisting language="php"><![CDATA[
$opts = new Zend_Console_Getopt('abp:');
$opts->setHelp(
    array(
        'a' => 'option abricot, sans paramètres',
        'b' => 'option banane, avec un paramètre entier obligatoire',
        'p' => 'option pear, avec un paramètre chaîne de caractères optionel'
    )
);
]]></programlisting>
        </example>

        <para>
            Si vous déclarez des options avec des alias, vous pouvez employer n'importe quel
            alias comme clé du tableau associatif.
        </para>

        <para>
            La méthode <methodname>setHelp()</methodname> est la seule manière de définir des
            messages d'aide si vous déclarez les options en utilisant la syntaxe courte.
        </para>
    </sect2>

    <sect2 id="zend.console.getopt.configuration.addaliases">
        <title>Ajouter des alias aux options</title>

        <para>
            Vous pouvez déclarer des alias pour des options en utilisant la méthode
            <methodname>setAliases()</methodname>. L'argument est un tableau associatif, dont la
            clé est une chaîne de drapeau déclaré auparavant, et dont la valeur est un nouvel alias
            pour ce drapeau. Ces alias sont fusionnés avec tous les alias existants. En d'autres
            termes, les alias que vous avez déclarés plus tôt sont toujours actifs.
        </para>

        <para>
            Un alias ne peut être déclaré qu'une seule fois. Si vous essayez de redéfinir un
            alias, une <classname>Zend_Console_Getopt_Exception</classname> est levée.
        </para>

        <example id="zend.console.getopt.configuration.addaliases.example">
            <title>Utiliser setAliases()</title>

            <programlisting language="php"><![CDATA[
$opts = new Zend_Console_Getopt('abp:');
$opts->setAliases(
    array(
        'a' => 'apple',
        'a' => 'apfel',
        'p' => 'pear'
    )
);
]]></programlisting>
        </example>

        <para>
            Dans l'exemple ci-dessus, après leurs déclarations, "<command>-a</command>",
            "<command>--apple</command>" et "<command>--apfel</command>" sont des alias les un pour
            les autres. En outre "<command>-p</command>" et "<command>--pear</command>" sont des
            alias l'un pour l'autre.
        </para>

        <para>
            La méthode <methodname>setAliases()</methodname> est la seule manière de définir des
            alias si vous déclarez les options en utilisant la syntaxe courte.
        </para>
    </sect2>

    <sect2 id="zend.console.getopt.configuration.addargs">
        <title>Ajouter des listes d'arguments</title>

        <para>
            Par défaut, <classname>Zend_Console_Getopt</classname> utilise
            <varname>$_SERVER['argv']</varname> comme tableau des arguments de ligne de commande à
            analyser. De manière alternative, vous pouvez indiquer le tableau d'arguments comme
            deuxième argument de constructeur. En conclusion, vous pouvez ajouter de nouveaux
            d'arguments à ceux déjà utilisés en utilisant la méthode
            <methodname>addArguments()</methodname>, ou vous pouvez remplacer le choix courant
            d'arguments en utilisant la méthode <methodname>setArguments()</methodname>.
            Dans les deux cas, le paramètre de ces méthodes est un
            simple tableau de chaîne. L'ancienne méthode ajoutait le tableau aux arguments
            courants, et la nouvelle méthode substitue le tableau aux arguments courants.
        </para>

        <example id="zend.console.getopt.configuration.addargs.example">
            <title>Utilisation de addArguments() et setArguments()</title>

            <programlisting language="php"><![CDATA[
// Par défaut, le constructeur utilise $_SERVER['argv']
$opts = new Zend_Console_Getopt('abp:');

// Ajoute un tableau aux arguments existants
$opts->addArguments(array('-a', '-p', 'p_parameter', 'non_option_arg'));

// Remplace les arguments existants par un nouveau tableau
$opts->setArguments(array('-a', '-p', 'p_parameter', 'non_option_arg'));
]]></programlisting>
        </example>
    </sect2>

    <sect2 id="zend.console.getopt.configuration.config">
        <title>Ajouter une configuration</title>

        <para>
            Le troisième paramètre du constructeur de <classname>Zend_Console_Getopt</classname>
            est un tableau d'options de configuration qui affectent le comportement de l'instance
            d'objet retournée. Vous pouvez également indiquer des options de configuration en
            utilisant la méthode <methodname>setOptions()</methodname>, ou vous pouvez placer une
            option individuelle en utilisant la méthode <methodname>setOption()</methodname>.
        </para>

        <note>
            <title>Clarifier le terme "option"</title>
            <para>
                Le terme "option" est employé pour la configuration de la classe
                <classname>Zend_Console_Getopt</classname> afin de correspondre à la terminologie
                utilisée dans le reste de Zend Framework. Ce n'est pas la même chose que les
                options de la ligne de commande qui sont analysées par la classe
                <classname>Zend_Console_Getopt</classname>.
            </para>
        </note>

        <para>
            Les options actuellement supportées ont des définitions de constantes dans la
            classe. Les options, leurs constantes (avec des valeurs littérales entre parenthèses)
            sont énumérées ci-dessous&#160;:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <constant>Zend_Console_Getopt::CONFIG_DASHDASH</constant>
                    ("dashDash"), si <constant>TRUE</constant>, utilise le drapeau spécial
                    "<command>--</command>" pour signifier la fin des drapeaux. Les arguments de
                    la ligne de commande suivant le double-tiret ne sont pas interprétées comme
                    options, même si les arguments commencent par un tiret. Cette option de
                    configuration vaut <constant>TRUE</constant> par défaut.
                </para>
            </listitem>
            <listitem>
                <para>
                    <constant>Zend_Console_Getopt::CONFIG_IGNORECASE</constant>
                    ("ignoreCase"), si <constant>TRUE</constant>, fait correspondre
                    des alias même s'ils différent en terme de casse. C'est-à-dire,
                    "<command>-a</command>" et "<command>-A</command>" seront considérés comme
                    des synonymes. Cette option de
                    configuration vaut <constant>FALSE</constant> par défaut.
                </para>
            </listitem>
            <listitem>
                <para>
                    <constant>Zend_Console_Getopt::CONFIG_RULEMODE</constant>
                    ("ruleMode") peut avoir les valeurs
                    <constant>Zend_Console_Getopt::MODE_ZEND</constant> ("zend") ou
                    <constant>Zend_Console_Getopt::MODE_GNU</constant> ("gnu"). Il
                    ne devrait pas être nécessaire d'employer cette option à moins que vous
                    n'étendiez la classe avec les formes additionnelles de syntaxe. Les deux modes
                    supportés dans la classe <classname>Zend_Console_Getopt</classname> de base
                    sont sans équivoque. Si le spécificateur est une chaîne de caractère, la classe
                    passe en <constant>MODE_GNU</constant>, autrement elle est en
                    <constant>MODE_ZEND</constant>.
                    Mais si vous étendez la classe et ajoutez de nouvelles formes de syntaxe, vous
                    pouvez avoir à indiquer le mode en utilisant cette option.
                </para>
            </listitem>
        </itemizedlist>

        <para>
            Plus d'options de configuration pourront être ajoutées en tant que futurs
            perfectionnements de cette classe.
        </para>

        <para>
            Les deux arguments de la méthode <methodname>setOption()</methodname> sont un nom
            d'option de configuration et une valeur d'option.
        </para>

        <example id="zend.console.getopt.configuration.config.example.setoption">
            <title>Utilisation de setOption()</title>

            <programlisting language="php"><![CDATA[
$opts = new Zend_Console_Getopt('abp:');
$opts->setOption('ignoreCase', true);
]]></programlisting>
        </example>

        <para>
            L'argument de la méthode <methodname>setOptions()</methodname> est un tableau
            associatif. Les clés de ce tableau sont les noms d'option de configuration, et les
            valeurs sont des valeurs de configuration. C'est également le format de tableau utilisé
            par le constructeur de classe. Les valeurs de configuration que vous indiquez sont
            fusionnées avec la configuration courante ; vous n'avez pas à énumérer toutes les
            options.
        </para>

        <example id="zend.console.getopt.configuration.config.example.setoptions">
            <title>Utilisation de setOptions()</title>

            <programlisting language="php"><![CDATA[
$opts = new Zend_Console_Getopt('abp:');
$opts->setOptions(
    array(
        'ignoreCase' => true,
        'dashDash'   => false
    )
);
]]></programlisting>
        </example>
    </sect2>
</sect1>
