Validare i form con la programmazione a oggetti

di: Fabio Sutto     03 Giugno 2004

La gestione delle informazioni provenienti dai moduli HTML è un'attività che da un lato richiede estrema attenzione e dall'altro tende spesso ad essere noiosa e ripetitiva, come se non bastasse quando ci si trova a raccogliere e validare le informazioni provenienti da form contenenti numerosi campi (tanto più se in precedenza è mancata una pianificazione attenta) gli script lato-server hanno la fastidiosa tendenza a trasformarsi in una serie disordinata di IF...ELSE... annidati.

Se poi il cliente si sbizzarrisce a chiedere modifiche e aggiustamenti dell'ultimo minuto, allora la situazione rischia di diventare davvero tragica.

In questo articolo e in quelli che seguiranno cercheremo di descrivere come, anche in questo caso, la programmazione Object Oriented sia di enorme aiuto nel creare degli script ordinati e facili da mantenere.

Come sempre quando si tratta di OOP bisogna partire da lontano, pianificare con pazienza evitando di gettarsi a capofitto nel codice, ecco perchè in questa prima parte cominceremo a creare delle classi che effettuino proprio quei controlli standard che solitamente siamo costretti ad eseguire attraverso una serie di fastidiose espressioni condizionali: chiameremo queste classi "rules", ovvero regole.

La lettura dell'articolo richiede che si disponga già di una certa confidenza con la programmazione a oggetti, argomento al quale freephp.html.it ha già dedicato numerosi articoli.

I messaggi di errore

Per prima cosa creiamo un file contenente alcuni messaggi di errore in italiano (così ci sarà facile passare da una lingua all'altra).


<?php
/*
File "it_error_const.inc.php"
*/


/*
Errori per campi singoli
*/

define('STR_TOO_LONG', '"%s" non può contenere più di %d caratteri' ) ;
define('STR_TOO_SHORT', '"%s" deve contenere almeno %d caratteri' ) ;
define('STR_BAD_RANGE', '"%s" deve contenere da %d a %d caratteri') ;
define('STR_BAD_LEN', '"%s" deve contenere %d caratteri') ;

/*
Errori per campi multipli (es. combo box)
*/

define('ARR_TOO_LONG', '"%s" non può contenere più di %d elementi' ) ;
define('ARR_TOO_SHORT', '"%s" deve contenere almeno %d elementi' ) ;
define('ARR_BAD_RANGE', '"%s" deve contenere da %d a %d elementi') ;
define('ARR_BAD_LEN', '"%s" deve contenere %d elementi') ;
define('LACK_OF_ELEMENTS', '"%s" non contiene tutti gli elementi richiesti') ;

define('IS_REQUIRED', '"%s" è un campo obbligatorio') ;
define('BAD_PATTERN', 'Il contenuto di "%s" non corrisponde al formato richiesto') ;
define('NOT_NUM', '"%s" non contiene un numero valido') ;
define('NUM_BAD_RANGE', 'il valore di "%s" deve essere compreso tra %d e %d') ;
.
.
.

Come vedremo più avanti questi messaggi verranno utilizzati grazie alla funzione sprintf()

La gestione degli errori

Il file che presenta i messaggi di errore contiene anche una classe generica e astratta per la gestione degli errori: da questa classe erediteranno, direttamente o indirettamente, tutte le altre che andranno a comporre il nostro mini-framework. In PHP4 le classi astratte non esistono (le cose cambiano con PHP5) ma nulla ci impedisce utilizzare una classe qualsiasi come se fosse un modello astratto.

/*
Sempre nel file "it_error_const.inc.php"
*/
.
.
.
/* Classe astratta per la gestione degli errori */
class AbstrErrHandler{

  /*
    Raccoglie gli errori
    */
  var $errors ;

  /*     Costruttore */
  function AbstrErrHandler()
  {
    $this->errors = array() ;
  }
  function isValid()
    {
    /*     TRUE se 0 errori */
    return !(bool)count($this->errors) ;
  }
    /*     Restituisce il primo errore verificatosi */
  function getError()
  {
    return array_shift($this->errors) ;
  }
  /*     Restituisce tutto lo stack degli errori */
    function getErrors()
    {
         return $this->errors ;
       }

}//END AbstrErrHandler
?>

Guide PHP

Guida Yii Framework

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

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

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

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