<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 21829 -->
<!-- Reviewed: no -->
<sect1 id="zend.filter.introduction">
    <title>Introduction</title>

    <para>
        Le composant <classname>Zend_Filter</classname> fournit un ensemble de filtres de
        données usuel. Il fournit également un mécanisme simple de chaînage par lequel plusieurs
        filtres peuvent être appliqués à une donnée dans un ordre défini.
    </para>

    <sect2 id="zend.filter.introduction.definition">
        <title>Qu'est-ce qu'un filtre&#160;?</title>

        <para>
            Généralement parlant, un filtre est utilisé pour supprimer les parties non
            désirées de ce qui lui est soumis tout en laissant passer la partie désirée. Dans ce cas
            de figure, un filtre est une opération qui restitue une partie de la donnée soumise. Ce
            type de filtrage est utile pour les applications Web&#160;: suppression des données
            soumises non conformes, élimination des espaces inutiles, etc.
        </para>

        <para>
            Cette définition simple d'un filtre peut être étendue pour inclure des
            transformations généralisées aux données soumises. Une transformation communément
            requise dans les applications Web consiste à échapper les entités HTML. Ainsi, si un
            champ de formulaire est automatiquement transmis et contient des données non vérifiées
            (provenant par exemple d'un navigateur Web), ces données doivent être purgées de leurs
            entités HTML ou bien contenir uniquement des entités HTML échappées, de manière à se
            garantir contre des comportements non désirés et les vulnérabilités de sécurité. Afin
            d'assurer cette opération, les entités HTML qui sont présentes dans les données saisies
            doivent être soit supprimées soit échappées. Naturellement, l'approche adéquate dépend
            du contexte. Un filtre de suppression des entités HTML opère dans le contexte défini
            plus haut&#160;: une opération produisant un sous-ensemble à partir d'une donnée
            soumise. Cependant, un filtre échappant les entités HTML transforme la valeur entrée
            (par exemple, "<code>&amp;</code>" sera transformé en "<code>&amp;amp;</code>".
            Permettre de telles choses est important pour les développeurs Web et "filtrer" dans le
            contexte d'utilisation de <classname>Zend_Filter</classname> consiste à réaliser des
            transformations sur les données soumises.
        </para>
    </sect2>

    <sect2 id="zend.filter.introduction.using">
        <title>Utilisation basique des filtres</title>

        <para>
            Avoir cette définition d'un filtre établie fournit la base pour
            <classname>Zend_Filter_Interface</classname>, qui nécessitent une méthode unique nommée
            <methodname>filter()</methodname> pour être implémentée par une classe de filtre.
        </para>

        <para>
            L'exemple simple ci-dessous démontre l'utilisation d'un filtre sur les caractères
            esperluette (<code>&amp;</code>, "ampersand" en anglais) et guillemet double
            (<code>"</code>) : <programlisting language="php"><![CDATA[
$htmlEntities = new Zend_Filter_HtmlEntities();

echo $htmlEntities->filter('&'); // &amp;
echo $htmlEntities->filter('"'); // &quot;
]]></programlisting></para>
        </sect2>

        <sect2 id="zend.filter.introduction.static">
            <title>Utilisation de la méthode statique staticFilter()</title>

        <para>
            S'il est peu pratique de charger une classe de filtre donnée et créer une instance
            du filtre, vous pouvez utiliser la méthode statique
            <methodname>Zend_Filter::get()</methodname> comme appel alternatif. Le premier argument de
            cette méthode est une valeur de saisie de données, que vous passeriez à la méthode
            <methodname>filter()</methodname>. Le deuxième argument est une chaîne, qui correspond au nom de
            base de la classe de filtre, relativement dans l'espace de nommage
            <classname>Zend_Filter</classname>. La méthode <methodname>staticFilter()</methodname> charge automatiquement
            la classe, crée une instance et applique la méthode <methodname>filter()</methodname> à la donnée
            saisie. <programlisting language="php"><![CDATA[
echo Zend_Filter::get('&', 'HtmlEntities');
]]></programlisting></para>

        <para>
            Vous pouvez aussi fournir un tableau de paramètres destinés au constructeur de la
            classe, s'ils sont nécessaires pour votre classe de filtre. <programlisting
            role="php"><![CDATA[
echo Zend_Filter::filterStatic('"',
                               'HtmlEntities',
                               array('quotestyle' => ENT_QUOTES));
]]></programlisting></para>

        <para>
            L'utilisation statique peut être pratique pour invoquer un filtre ad hoc, mais si
            vous avez besoin d'exécuter un filtre pour des saisies multiples, il est plus efficace
            de suivre le premier exemple ci-dessus, créant une instance de l'objet de filtre et
            appelant sa méthode <methodname>filter()</methodname>.
        </para>

        <para>
            De plus, la classe <classname>Zend_Filter_Input</classname> vous permet
            d'instancier et d'exécuter des filtres multiples et des classes de validateurs sur
            demande pour traiter l'ensemble de données saisies. Voir <xref
            linkend="zend.filter.input" />.
        </para>
    </sect2>
</sect1>