# Opération Captcha

Tous les adaptateurs CAPTCHA implémentent `Zend_Captcha_Adapter`, qui ressemble à ceci :

    interface Zend_Captcha_Adapter extends Zend_Validate_Interface
    {
        public function generate();

        public function render(Zend_View $view, $element = null);

        public function setName($name);

        public function getName();

        public function getDecorator();

        // De plus, pour satisfaire Zend_Validate_Interface :
        public function isValid($value);

        public function getMessages();

        public function getErrors();
    }

Le mutateur et l'accesseur "name" sont utilisés pour spécifier et récupérer l'identifiant du CAPTCHA. `getDecorator()` peut être utilisé pour spécifier un décorateur `Zend_Form` soit par son nom ou en retournant un objet décorateur. Les vraies clés sont utilisées sauf pour `generate()` et `render()`. `generate()` est utilisé pour créer l'élément CAPTCHA. Ce processus typiquement stockera l'élément en session ainsi il pourra être utilisé pour comparaison dans les requêtes suivantes. `render()` est utilisé pour effectuer le rendu de l'information que représente le CAPTCHA - en image, en texte Figlet, en problème logique, ou tout autre type de CAPTCHA.

Un cas d'utilisation typique pourrait ressembler à ceci :

    // Créer une instance de Zend_View
    $view = new Zend_View();

    // Requête original :
    $captcha = new Zend_Captcha_Figlet(array(
        'name' => 'foo',
        'wordLen' => 6,
        'timeout' => 300,
    ));
    $id = $captcha->generate();
    echo $captcha->render($view);

    // Lors de la requête suivante :
    // suppose que $captcha a été paramètré avant,
    // et que $value est la valeur soumise :
    if ($captcha->isValid($_POST['foo'], $_POST)) {
        // Validated!
    }