| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect2 id="zend.validate.set.callback">
- <title>Callback (fonction de rappel)</title>
- <para>
- <classname>Zend_Validate_Callback</classname> permet de fournir une fonction de rappel
- utilisée pour valider la valeur.
- </para>
- <sect3 id="zend.validate.set.callback.options">
- <title>Options supportées par Zend_Validate_Callback</title>
- <para>
- Les options suivantes sont supportées par
- <classname>Zend_Validate_Callback</classname> :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis><property>callback</property></emphasis> : spécifie la fonction
- de rappel qui sera utilisée pour la validation.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis><property>options</property></emphasis> : spécifie les options
- additionnelles qui seront fournies à la fonction de rappel.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.validate.set.callback.basic">
- <title>Utilisation classique</title>
- <para>
- Le plus simple est de posséder une fonction classique, qui sera utilisée
- pour valider la donnée. Soit la fonction ci-après :
- </para>
- <programlisting language="php"><![CDATA[
- function myMethod($value)
- {
- // ici de la validation à effectuer
- return true;
- }
- ]]></programlisting>
- <para>
- Pour l'utiliser avec<classname>Zend_Validate_Callback</classname> vous devez simplement
- effectuer votre appel comme ceci:
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_Callback('myMethod');
- if ($valid->isValid($input)) {
- // input semble valide
- } else {
- // input est invalide
- }
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.validate.set.callback.closure">
- <title>Utilisation avec les fonctions anonymes (closures)</title>
- <para>
- PHP 5.3 introduit les <ulink url="http://php.net/functions.anonymous">fonctions
- anonymes</ulink> ou fonctions de <emphasis>fermeture</emphasis>. PHP traite les
- fonctions anonymes comme des fonctions de rappel valides, et il est donc
- possible d'utiliser celles-ci avec <classname>Zend_Validate_Callback</classname>.
- Exemple:
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_Callback(function($value){
- // Validation ici
- return true;
- });
- if ($valid->isValid($input)) {
- // input semble valide
- } else {
- // input est invalide
- }
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.validate.set.callback.class">
- <title>Utilisation avec les méthodes de rappel</title>
- <para>
- Bien sûr, il est aussi possible d'utiliser des méthodes de rappel:
- </para>
- <programlisting language="php"><![CDATA[
- class MyClass
- {
- public function myMethod($value)
- {
- // Validation ici
- return true;
- }
- }
- ]]></programlisting>
- <para>
- La définition de la fonction de rappel se fait alors dans un tableau contenant un
- objet de la classe et la méthode à appeler:
- </para>
- <programlisting language="php"><![CDATA[
- $object = new MyClass;
- $valid = new Zend_Validate_Callback(array($object, 'myMethod'));
- if ($valid->isValid($input)) {
- // input semble valide
- } else {
- // input est invalide
- }
- ]]></programlisting>
- <para>
- Il est aussi possible d'utiliser une méthode statique comme fonction de rappel:
- </para>
- <programlisting language="php"><![CDATA[
- class MyClass
- {
- public static function test($value)
- {
- // Validation ici
- return true;
- }
- }
- $valid = new Zend_Validate_Callback(array('MyClass', 'test'));
- if ($valid->isValid($input)) {
- // input semble valide
- } else {
- // input est invalide
- }
- ]]></programlisting>
- <para>
- Enfin, PHP 5.3 définit la méthode magique <methodname>__invoke()</methodname>.
- Si vous l'utilisez, alors un simple objet suffira comme fonction de rappel:
- </para>
- <programlisting language="php"><![CDATA[
- class MyClass
- {
- public function __invoke($value)
- {
- // Validation ici
- return true;
- }
- }
- $object = new MyClass();
- $valid = new Zend_Validate_Callback($object);
- if ($valid->isValid($input)) {
- // input semble valide
- } else {
- // input est invalide
- }
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.validate.set.callback.options2">
- <title>Ajouter des options</title>
- <para>
- <classname>Zend_Validate_Callback</classname> permet d'utiliser des options, celles-ci
- seront alors passées comme argument supplémentaires à la fonction de callback.
- </para>
- <para>
- Soit la définition suivante:
- </para>
- <programlisting language="php"><![CDATA[
- class MyClass
- {
- function myMethod($value, $option)
- {
- // De la validation ici
- return true;
- }
- }
- ]]></programlisting>
- <para>
- Il extsite deux manières d'indiquer des options au validateur : via le constructeur ou sa
- méthode <methodname>setOptions()</methodname>.
- </para>
- <para>
- Via le constructeur, passez un tableau contenant les clés "callback" et "options":
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_Callback(array(
- 'callback' => array('MyClass', 'myMethod'),
- 'options' => $option,
- ));
- if ($valid->isValid($input)) {
- // input semble valide
- } else {
- // input est invalide
- }
- ]]></programlisting>
- <para>
- Sinon, vous pouvez passer les options après:
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_Callback(array('MyClass', 'myMethod'));
- $valid->setOptions($option);
- if ($valid->isValid($input)) {
- // input semble valide
- } else {
- // input est invalide
- }
- ]]></programlisting>
- <para>
- Si des valeurs supplémentaires sont passées à <methodname>isValid()</methodname> elles
- seront utilisées comme arguments supplémentaires lors de l'appel à la fonction de rappel,
- mais avant les options <varname>$options</varname>.
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_Callback(array('MyClass', 'myMethod'));
- $valid->setOptions($option);
- if ($valid->isValid($input, $additional)) {
- // input semble valide
- } else {
- // input est invalide
- }
- ]]></programlisting>
- <para>
- Lors de l'appel à la fonction de rappel, la valeur à valider sera toujours passée comme premier argument
- à la fonction de rappel suivie de toutes les autres valeurs passées à
- <methodname>isValid()</methodname>; les autres options suivront. Le nombre et le type d'options qui
- peuvent être utilisées est illimité.
- </para>
- </sect3>
- </sect2>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|