<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.filter.set.callback">
    <title>Callback</title>
    <para>
        Ce filtre vous permet d'utiliser votre propre fonction en tant que filtre de
        <classname>Zend_Filter</classname>. Nul besoin de créer un filtre si une fonction ou
        méthode fait déja le travail.
    </para>

    <sect3 id="zend.filter.set.callback.options">
        <title>Options supportées par Zend_Filter_Callback</title>

        <para>
            Les options suivantes sont supportées par
            <classname>Zend_Filter_Callback</classname>&#160;:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <emphasis><property>callback</property></emphasis>&#160;: ceci spécifie
                    le callback qui sera utilisé.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis><property>options</property></emphasis>&#160;: cette propriété
                    les options utilisées lorsque le callback est exécuté.
                </para>
            </listitem>
        </itemizedlist>
    </sect3>

    <sect3 id="zend.filter.set.callback.basic">
        <title>Utilisation de base</title>

        <para>
            L'utilisation de ce filtre est assez simple. Prenos par exemple un filtre qui inverse
            une chaine.
        </para>

        <programlisting language="php"><![CDATA[
$filter = new Zend_Filter_Callback('strrev');

print $filter->filter('Hello!');
// retourne "!olleH"
]]></programlisting>

        <para>
            C'est très simple de passer une fonction à appliquer comme filtre. Dans le cas de
            méthodes de classes, passez un tableau comme callback.
        </para>

        <programlisting language="php"><![CDATA[
// Notre classe
class MyClass
{
    public function Reverse($param);
}

// La définition du filtre
$filter = new Zend_Filter_Callback(array('MyClass', 'Reverse'));
print $filter->filter('Hello!');
]]></programlisting>

        <para>
            Pour récupérer la fonction de filtrage actuelle, utilisez
            <methodname>getCallback()</methodname> et pour en affecter une nouvelle, utilisez
            <methodname>setCallback()</methodname>.
        </para>

        <note>
            <title>Exception possible</title>

            <para>
                Notez que passer une fonction qui ne peut être appelée mènera à une exception.
            </para>
        </note>

    </sect3>

    <sect3 id="zend.filter.set.callback.parameters">
        <title>Default parameters within a callback</title>

        <para>
            Il est aussi possible de définir des paramètres par défaut qui sont alors passés à la
            méthode appelée lorsque le filtre est exécuté.
        </para>

        <programlisting language="php"><![CDATA[
$filter = new Zend_Filter_Callback(
    array(
        'callback' => 'MyMethod',
        'options'  => array('key' => 'param1', 'key2' => 'param2')
    )
);
$filter->filter(array('value' => 'Hello'));
]]></programlisting>

        <para>
            L'appel manuel à une telle fonction se serait fait comme cela:
        </para>

        <programlisting language="php"><![CDATA[
$value = MyMethod('Hello', 'param1', 'param2');
]]></programlisting>
    </sect3>
</sect2>
