Rozdział 27. Zend_Validate
Poprzedni |  | Następny

## Rozdział 27. Zend_Validate

## 27.1. Wprowadzenie

Komponent Zend_Filter zapewnia zestaw najczęściej potrzebnych walidatorów. Zapewnia też prosty mechanizm łańcuchowego wywoływania walidatorów, dzięki ktoremu wiele filtrów może być dodanych do jednej danej w kolejności zdefiniowanej przez programistę.

Czym jest walidator?

Walidator bada dane wejściowe w oparciu o pewne wymagania i tworzy wynik w postaci wartości logicznej - wartość ta mówi czy dane wejściowe spełniają te wymagania. Jeśli dane wejściowe nie spełniają wymagań, walidator może dodatkowo przekazać informacje o tym, które z wymagań nie zostały spełnione.

Na przykład, aplikacja web może wymagać, aby długość nazwy użytkownika mieściła się pomiędzy sześcioma a dwunastoma znakami, a znaki te były jedynie z grupy znaków alfanumerycznych. Walidator może być użyty do sprawdzenia czy nazwa użytkownika spełnia te wymagania. Jeśli wybrana nazwa użytkownika nie spełni jednego lub obu tych wymagań, użytecznie by było wiedzieć, które z wymagań nie zostało spełnione.

Mająć ustaloną w ten sposób definicję walidacji, możemy zapewnić podstawę dla interfejsu `Zend_Validate_Interface`, który wymaga zaimplementowania przez klasę walidatora dwóch metod, `isValid()` oraz `getMessages()`. Metoda `isValid()` przeprowadza walidację podanej wartości, zwracając `true` wtedy i tylko wtedy, gdy wartość spełnia kryteria walidacji. Jeśli metoda `isValid()` zwróci `false`, za pomocą metody `getMessages()` można pobrać tablicę wiadomości wyjaśniających powody niepowodzenia walidacji.

| Notatka
Metoda `getMessages()` zwraca wiadomości nieudanej walidacji tylko dla ostatniego wywołania metody `isValid()`, ponieważ metoda `isValid()` czyści wszystkie wiadomości pochodzące z poprzednich wywołań metody `isValid()`.

Poniższy przykład ilustruje walidację adresu e-mail:

    <?php
    require_once 'Zend/Validate/EmailAddress.php';
    $validator = new Zend_Validate_EmailAddress();
    if ($validator->isValid($email)) {
        // email jest prawidłowy
    } else {
        // email nie jest prawidłowy; wyświetl powody
        foreach ($validator->getMessages() as $message) {
            echo "$message\n";
        }
    }

Poprzedni |  | Następny
Rozdział 26. Zend_Uri | Spis treści | 27.2. Łańcuchy walidatorów