<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.validate.set.stringlength">
    <title>StringLength</title>

    <para>
        Ce validateur vérifie la longueur d'une chaine de caractères.
    </para>

    <note>
        <title>Zend_Validate_StringLength ne supporte que les chaines</title>

        <para>
            Zend_Validate_StringLength ne fonctionnera pas avec les entiers, flottants, les dates ou
            encore les objets.
        </para>
    </note>

    <sect3 id="zend.validate.set.stringlength.options">
        <title>Options gérées par Zend_Validate_StringLength</title>

        <para>
            Les options suivantes sont reconnues par
            <classname>Zend_Validate_StringLength</classname>:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <emphasis><property>encoding</property></emphasis>: Définit l'encodage
                    <constant>ICONV</constant> à utiliser avec la chaine.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis><property>min</property></emphasis>: Définit le nombre de caractères
                    minimum requis.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis><property>max</property></emphasis>: Définit le nombre de caractères
                    maximum requis.
                </para>
            </listitem>
        </itemizedlist>
    </sect3>

    <sect3 id="zend.validate.set.stringlength.basic">
        <title>Comportement par défaut de Zend_Validate_StringLength</title>

        <para>
            Par défaut, ce validateur vérifie qu'une valeur de chaine est bien entre <property>min</property> et
            <property>max</property> caractères. Pour <property>min</property>, la valeur par défaut est
            <emphasis>0</emphasis> et pour <property>max</property> c'est
            <emphasis><constant>NULL</constant></emphasis> ce qui signifie illimité.
        </para>

        <para>
            Ainsi par défaut, sans aucune option, ce validateur vérifie que la donnée traitée est bien une chaine.
        </para>
    </sect3>

    <sect3 id="zend.validate.set.stringlength.maximum">
        <title>Limiter sur la borne supérieure</title>

        <para>
            La borne supérieure se règle au moyen de l'option <property>max</property>.
            Ce doit être un entier.
        </para>

        <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_StringLength(array('max' => 6));

$validator->isValid("Test"); // retourne true
$validator->isValid("Testing"); // retourne false
]]></programlisting>

        <para>
            Il est possible de préciser cette option plus tard, au moyen de la méthode
            <methodname>setMax()</methodname>. <methodname>getMax()</methodname> existe aussi.
        </para>

        <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_StringLength();
$validator->setMax(6);

$validator->isValid("Test"); // retourne true
$validator->isValid("Testing"); // retourne false
]]></programlisting>
    </sect3>

    <sect3 id="zend.validate.set.stringlength.minimum">
        <title>Limiter sur la borne inférieure</title>

        <para>
            La borne inférieure se règle au moyen de l'option <property>min</property>.
            Ce doit être un entier.
        </para>

        <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_StringLength(array('min' => 5));

$validator->isValid("Test"); // retourne false
$validator->isValid("Testing"); // retourne true
]]></programlisting>

        <para>
            Il est possible de préciser cette option plus tard, au moyen de la méthode
            <methodname>setMin()</methodname>. <methodname>getMin()</methodname> existe aussi.
        </para>

        <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_StringLength();
$validator->setMin(5);

$validator->isValid("Test"); // retourne false
$validator->isValid("Testing"); // retourne true
]]></programlisting>
    </sect3>

    <sect3 id="zend.validate.set.stringlength.both">
        <title>Limiter via les deux bornes</title>

        <para>
            Quelques fois, il est nécessaire de s'assurer que la chaine comprenne bien un nombre
            de caractères entre deux bornes min et max. Par exemple depuis un champ de formulaire
            représentant un nom, vous voudriez que l'utilisateur ne puisse saisir plus de 30
            caractères mais au moins 3. Voyez l'exemple qui suit:
        </para>

        <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_StringLength(array('min' => 3, 'max' => 30));

$validator->isValid("."); // retourne false
$validator->isValid("Test"); // retourne true
$validator->isValid("Testing"); // retourne true
]]></programlisting>

        <note>
            <title>Comportement illogique, borne inférieure supérieure à la borne supérieure</title>

            <para>
                Si vous tentez de préciser un min supérieur au max, ou inversement, une exception
                sera levée.
            </para>
        </note>
    </sect3>

    <sect3 id="zend.validate.set.stringlength.encoding">
        <title>Encodage des valeurs</title>

        <para>
            Les chaines se représentent toujours en considérant un encodage. Même si vous ne le précisez
            pas explicitement, <acronym>PHP</acronym> en utilise un. Si votre application utilise un
            encodage différent de celui de <acronym>PHP</acronym>, vous devrez alors le préciser.
        </para>

        <para>
            Vous pouvez passer votre propre encodage à l'initialisation grâce à l'option
            <property>encoding</property>, ou en utilisant la méthode <methodname>setEncoding()</methodname>
            . Nous supposons que votre installation utilise <acronym>ISO</acronym> ainsi que votre
            application. Dans ce cas, vous verrez le comportement suivant:
        </para>

        <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_StringLength(
    array('min' => 6)
);
$validator->isValid("Ärger"); // retourne false

$validator->setEncoding("UTF-8");
$validator->isValid("Ärger"); // retourne true

$validator2 = new Zend_Validate_StringLength(
    array('min' => 6, 'encoding' => 'UTF-8')
);
$validator2->isValid("Ärger"); // retourne true
]]></programlisting>

        <para>
            Si votre installation et votre application utilisent des encodages différents, vous deviez
            toujours préciser l'encodage vous-même.
        </para>
    </sect3>
</sect2>
<!--
vim:se ts=4 sw=4 et:
-->
