Comporre la gerarchia - seconda parte



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.

Ultimi articoli PHP

Sessioni PHP: cosa sono, come si usano

Dalla configurazione di PHP, alla gestione delle sessioni in un...

Continuous Integration: automatizziamo i client con Phing

Continuous Integration: automatizziamo i client con Phing. Esempi...

Archiviazione delle applicazioni PHP con Phar

Come incorporare intere applicazioni PHP all'interno di un singolo...

I traits in PHP 5.4

Cosa sono, a cosa servono e come si unsano i traits, la novità per...

PHP 5.4: il web server integrato

Impara ad usare il web server integrato nella versione 5.4 di PHP:...

Altri articoli

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti