E’ da tempo che programmo in PHP e ho avuto modo di apprezzare la programmazione OO, rispetto all’approccio procedurale, in particolare grazie al maggior supporto agli oggetti di PHP5.
Vedremo in questo articolo come validare i campi di un form, utilizzando la gestione delle eccezioni, disponibili solo dalla versione 5, appunto.
Darò per scontato che già sappiate programmare ad oggetti con PHP. Quindi, procediamo.
In PHP — così come in molti altri linguaggi — le eccezioni si gestiscono con questo blocco di codice:
// Provo ad eseguire delle istruzioni
}catch(Exception $e){
// Eseguo delle istruzioni alternative
}
// Riprende l'esecuzione normale
Vediamo allora come sfruttare questa cosa.
Poniamo di avere una pagina HTML con un form di registrazione utente con i campi user, password ed email.
Creiamo la nostra classe User: avrà i suoi costruttori, vari metodi, un metodo di inserimento ed uno di validazione.
// ...
function insert($dati){
$this->validate($dati);
// inserimento nel database
}
function validate($dati){
if($dati['user'] == "")
throw new Exception("il campo 'user' e' obbligatorio");
if($dati['password'] == "")
throw new Exception("il campo 'password' e' obbligatorio");
if(!$this->checkMail($dati['email']))
throw new Exception("è stata inserita una email non valida");
}
// ...
}
Come possiamo vedere, il metodo insert fa prima una chiamata al metodo validate e poi esegue le varie operazioni di inserimento nel database.
Il metodo validate, invece, verifica la correttezza dei dati inseriti e, nel caso in cui non soddisfi i criteri, lancia una eccezione che risalirà fino al chiamante di insert e dovrà quindi essere gestita. Da notare che è possibile passare una stringa esplicativa dell’errore.
Dall’altra parte, nella pagina con il form, ecco cosa accade:
try{
$user->insert($_POST);
echo 'Inserimento completato';
}catch(Exception $e){
echo 'Errore: ' . $e->getMessage();
}
}
// codice per il form
Se è stato fatto il POST del form, chiamiamo la insert all’interno della try-catch: nel caso vada tutto ok mostriamo il messaggio di conferma (oppure possiamo fare il redirect ad un’altra pagina), altrimenti mostriamo l’errore.
Come potrete immaginare, il metodo getMessage restituirà il messaggio di errore che abbiamo impostato precedentemente nel metodo di validazione.
Mi sembra un modo molto pulito e facilmente mantenibile per validare i campi di un form, sfruttando al meglio le caratteristiche di PHP5.




Ottimo post.