Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 47 di 50
  • livello avanzato
Indice lezioni

Comporre la gerarchia - seconda parte

Studio della classe FormCheck: la classe dedicata ad attivare i metodi delle due classi precedenti
Studio della classe FormCheck: la classe dedicata ad attivare i metodi delle due classi precedenti
Link copiato negli appunti

Ovviamente, tutti i metodi cui abbiamo accennato nella lezione precedente non hanno efficacia finché non vengono azionati. Ma non sarà compito della classe AFormCheck farlo, perché quest'ultima rappresenta solamente un contenitore di funzionalità generali. Sarà infatti una prerogativa della classe FormCheck richiamarli, a seconda che i diversi controlli abbiano esito positivo o meno. Ecco il codice della prima parte di quest'ultima componente:

// ----------------------------------------
// class FormCheck
//              extends AFormCheck
// ----------------------------------------
class FormCheck extends AFormCheck {
        // metodi di checking
        public function checkName() {
                if(is_string($this->name) && ctype_alnum($this->name) && (strlen($this->name) <= 10) && (strlen($this->name) >= 4)) {
                        echo "<p>Il nome è stato inviato correttamente.</p>";
                        $this->clean['name'] = htmlentities($this->name, ENT_QUOTES);
                }
                else {
                        $this->trackErrorMsg('name');
                }
        }
        public function checkLastname() {
                if(is_string($this->lastname) && ctype_alnum($this->lastname) && (strlen($this->lastname) <= 15) && (strlen($this->lastname) >= 4)) {
                        echo "<p>Il cognome è stato inviato correttamente.</p>";
                        $this->clean['lastname'] = htmlentities($this->lastname, ENT_QUOTES);
                }
                else {
                        $this->trackErrorMsg('lastname');
                }
        }
        public function checkEMail() {
                if(is_string($this->email) && eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+.[a-zA-Z.]{2,5}$', $this->email)) {
                        echo "<p>L'e-mail è stata inviata correttamente.</p>";
                        $this->clean['email'] = $this->email;
                }
                else {
                        $this->trackErrorMsg('email');
                }
        }
        public function checkYear() {
                if((intval($this->year) >= 1900)) {
                        echo "<p>L'anno di nascita è stato inviato correttamente.</p>";
                        $this->clean['year'] = (int)$this->year;
                }
                else {
                        $this->trackErrorMsg('year');
                }
        }
        // ...

Tutti questi metodi servono per effettuare il checking dei valori forniti dagli utenti:

  • il metodo checkName controlla che il nome sia una stringa alfanumerica e che sia composto da un numero di caratteri compreso tra 4 e 10
  • il metodo checkLastame controlla che il cognome sia una stringa alfanumerica e che sia composto da un numero di caratteri compreso tra 4 e 15
  • il metodo checkEmail controlla che l' e-mail sia fornita in una forma corretta tramite una Regular Expression
  • il metodo checkYear controlla che l'anno di nascita sia maggiore o uguale a 1900

In tutti i casi, se il controllo va a buon fine, l'array clean viene riempito con i valori forniti dall'utente (alcuni vengono "puliti" ulteriormente con funzioni che PHP fornisce internamente), altrimenti viene registrato l'apposito errore.

A questo punto il 90% della nostra gerarchia Object Oriented è stato realizzato. Vediamo dunque di colmare il rimanente 10% analizzando gli ultimi due metodi della classe FormCheck:

// ...
public function checkAll() {
                $this->checkName();
                $this->checkLastname();
                $this->checkEMail();
                $this->checkYear();
                return $this->getErrorMsg();
        }
        // altro
        public function setErrorMsgs($errs) {
                foreach($errs as $err => $txt) {
                        $this->errorMsgs[$err] = $txt;
                }
        }
}

Il metodo checkAll, che rappresenta il metodo pubblico che verrà utilizzato maggiormente, fornisce sostanzialmente due funzionalità fondamentali:

  • richiamare tutti gli altri metodi di checking definiti in precedenza (checkName, checkLastname, checkEMail, checkYear)
  • azionare il metodo getErrorMsg ereditato dalla classe AFormCheck per vedere se sono stati registrati errori e generare di conseguenza gli appositi messaggi

Il metodo setErrorMsgs infine, accetta un array con coppie key/value impostate rispettivamente a "campo/testo di errore", per personalizzare i messaggi di testo standard forniti dalla classe AFormCheck.

A questo punto siamo arrivati al completamento della nostra gerarchia. L'unica cosa che manca è la visualizzazione pratica dell'applicazione in uno scenario reale, che affronteremo nella prossima lezione.

Ti consigliamo anche