[ZF-10089] Zend_Log
[zend.git] / documentation / manual / fr / module_specs / Zend_Validate-Callback.xml
blobceca235e0cd75bf9ee1bc308e2d1db9fe6b63bef
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 21740 -->
3 <!-- Reviewed: no -->
4 <sect2 id="zend.validate.set.callback">
5     <title>Callback (fonction de rappel)</title>
7     <para>
8         <classname>Zend_Validate_Callback</classname> permet de fournir une fonction de rappel
9         utilisée pour valider la valeur.
10     </para>
12     <sect3 id="zend.validate.set.callback.options">
13         <title>Options supportées par Zend_Validate_Callback</title>
15         <para>
16             Les options suivantes sont supportées par
17             <classname>Zend_Validate_Callback</classname>&#160;:
18         </para>
20         <itemizedlist>
21             <listitem>
22                 <para>
23                     <emphasis><property>callback</property></emphasis>&#160;: spécifie la fonction
24                     de rappel qui sera utilisée pour la validation.
25                 </para>
26             </listitem>
28             <listitem>
29                 <para>
30                     <emphasis><property>options</property></emphasis>&#160;: spécifie les options
31                     additionnelles qui seront fournies à la fonction de rappel.
32                 </para>
33             </listitem>
34         </itemizedlist>
35     </sect3>
37     <sect3 id="zend.validate.set.callback.basic">
38         <title>Utilisation classique</title>
40         <para>
41             Le plus simple est de posséder une fonction classique, qui sera utilisée
42             pour valider la donnée. Soit la fonction ci-après :
43         </para>
45         <programlisting language="php"><![CDATA[
46 function myMethod($value)
48     // ici de la validation à effectuer
49     return true;
51 ]]></programlisting>
53         <para>
54             Pour l'utiliser avec<classname>Zend_Validate_Callback</classname> vous devez simplement
55             effectuer votre appel comme ceci:
56         </para>
58         <programlisting language="php"><![CDATA[
59 $valid = new Zend_Validate_Callback('myMethod');
60 if ($valid->isValid($input)) {
61     // input semble valide
62 } else {
63     // input est invalide
65 ]]></programlisting>
66     </sect3>
68     <sect3 id="zend.validate.set.callback.closure">
69         <title>Utilisation avec les fonctions anonymes (closures)</title>
71         <para>
72             PHP 5.3 introduit les <ulink url="http://php.net/functions.anonymous">fonctions
73             anonymes</ulink> ou fonctions de <emphasis>fermeture</emphasis>. PHP traite les
74             fonctions anonymes comme des fonctions de rappel valides, et il est donc
75             possible d'utiliser celles-ci avec <classname>Zend_Validate_Callback</classname>.
76             Exemple:
77         </para>
79         <programlisting language="php"><![CDATA[
80 $valid = new Zend_Validate_Callback(function($value){
81     // Validation ici
82     return true;
83 });
85 if ($valid->isValid($input)) {
86     // input semble valide
87 } else {
88     // input est invalide
90 ]]></programlisting>
91     </sect3>
93     <sect3 id="zend.validate.set.callback.class">
94         <title>Utilisation avec les méthodes de rappel</title>
96         <para>
97             Bien sûr, il est aussi possible d'utiliser des méthodes de rappel:
98         </para>
100         <programlisting language="php"><![CDATA[
101 class MyClass
103     public function myMethod($value)
104     {
105         // Validation ici
106         return true;
107     }
109 ]]></programlisting>
111         <para>
112             La définition de la fonction de rappel se fait alors dans un tableau contenant un
113             objet de la classe et la méthode à appeler:
114         </para>
116         <programlisting language="php"><![CDATA[
117 $object = new MyClass;
118 $valid = new Zend_Validate_Callback(array($object, 'myMethod'));
119 if ($valid->isValid($input)) {
120     // input semble valide
121 } else {
122     // input est invalide
124 ]]></programlisting>
126         <para>
127             Il est aussi possible d'utiliser une méthode statique comme fonction de rappel:
128         </para>
130         <programlisting language="php"><![CDATA[
131 class MyClass
133     public static function test($value)
134     {
135         // Validation ici
136         return true;
137     }
140 $valid = new Zend_Validate_Callback(array('MyClass', 'test'));
141 if ($valid->isValid($input)) {
142     // input semble valide
143 } else {
144     // input est invalide
146 ]]></programlisting>
148         <para>
149             Enfin, PHP 5.3 définit la méthode magique <methodname>__invoke()</methodname>.
150             Si vous l'utilisez, alors un simple objet suffira comme fonction de rappel:
151         </para>
153         <programlisting language="php"><![CDATA[
154 class MyClass
156     public function __invoke($value)
157     {
158         // Validation ici
159         return true;
160     }
163 $object = new MyClass();
164 $valid = new Zend_Validate_Callback($object);
165 if ($valid->isValid($input)) {
166     // input semble valide
167 } else {
168     // input est invalide
170 ]]></programlisting>
171     </sect3>
173     <sect3 id="zend.validate.set.callback.options2">
174         <title>Ajouter des options</title>
176         <para>
177             <classname>Zend_Validate_Callback</classname> permet d'utiliser des options, celles-ci
178             seront alors passées comme argument supplémentaires à la fonction de callback.
179         </para>
181         <para>
182             Soit la définition suivante:
183         </para>
185         <programlisting language="php"><![CDATA[
186 class MyClass
188     function myMethod($value, $option)
189     {
190         // De la validation ici
191         return true;
192     }
194 ]]></programlisting>
196         <para>
197             Il extsite deux manières d'indiquer des options au validateur : via le constructeur ou sa
198             méthode <methodname>setOptions()</methodname>.
199         </para>
201         <para>
202             Via le constructeur, passez un tableau contenant les clés "callback" et "options":
203         </para>
205         <programlisting language="php"><![CDATA[
206 $valid = new Zend_Validate_Callback(array(
207     'callback' => array('MyClass', 'myMethod'),
208     'options'  => $option,
211 if ($valid->isValid($input)) {
212     // input semble valide
213 } else {
214     // input est invalide
216 ]]></programlisting>
218         <para>
219             Sinon, vous pouvez passer les options après:
220         </para>
222         <programlisting language="php"><![CDATA[
223 $valid = new Zend_Validate_Callback(array('MyClass', 'myMethod'));
224 $valid->setOptions($option);
226 if ($valid->isValid($input)) {
227     // input semble valide
228 } else {
229     // input est invalide
231 ]]></programlisting>
233         <para>
234             Si des valeurs supplémentaires sont passées à <methodname>isValid()</methodname> elles
235             seront utilisées comme arguments supplémentaires lors de l'appel à la fonction de rappel,
236             mais avant les options <varname>$options</varname>.
237         </para>
239         <programlisting language="php"><![CDATA[
240 $valid = new Zend_Validate_Callback(array('MyClass', 'myMethod'));
241 $valid->setOptions($option);
243 if ($valid->isValid($input, $additional)) {
244     // input semble valide
245 } else {
246     // input est invalide
248 ]]></programlisting>
250         <para>
251             Lors de l'appel à la fonction de rappel, la valeur à valider sera toujours passée comme premier argument
252             à la fonction de rappel suivie de toutes les autres valeurs passées à
253             <methodname>isValid()</methodname>; les autres options suivront. Le nombre et le type d'options qui
254             peuvent être utilisées est illimité.
255         </para>
256     </sect3>
257 </sect2>
258 <!--
259 vim:se ts=4 sw=4 et: