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.
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') ;
.
.
.
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
?>
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Zend FrameworkDiventate professionisti dello sviluppo Web. Zend Framework è lo... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |