Come dichiarato e ribadito più volte nel corso della guida, uno dei vantaggi principali di un modello OOP risiede nell'estensibilità dell'applicazione, ovvero nella possibilità di aggiungere funzionalità personalizzate senza l'occorrenza di riscrivere completamente il nucleo principale. In questo caso ad esempio, vogliamo aggiungere un controllo che ci permetta di validare un ulteriore campo HTML del nostro form: la password.
Per velocizzare le procedure, supponiamo che la password dell'utente sia la stringa "ahy8978yha". Ora non ci resta che estendere la classe FormCheck con le funzionalità desiderate:
// ----------------------------------------
// class MoreFormCheck
// extends FormCheck
// ----------------------------------------
class MoreFormCheck extends FormCheck {
public $pw;
public $pw2;
// costruttore
public function __construct() {
parent::__construct();
$this->pw1 = $_POST['pw1'];
$this->pw2 = $_POST['pw2'];
$this->setErrorMsgs(array('pw' => 'La password non è corretta.'));
}
// metodi di checking
public function checkPw() {
if($this->pw1 === 'ahy8978yha' && $this->pw2 === 'ahy8978yha') {
echo "La password è stata inviata correttamente.
";
$this->clean['pw'] = $this->pw;
}
else {
$this->trackErrorMsg('pw');
}
}
// ...
Come possiamo vedere, la nostra classe MoreFormCheck, estendendo la precedente FormCheck, guadagna tutti i suoi metodi, senza l'occorrenza di una totale riscrittura. Dobbiamo solo ridefinire parte del costruttore, sia per dichiarare che per inizializzare le proprietà che conterranno le password. Tramite la chiamata del precedente costruttore (fornito dalla classe astratta AFormCheck) unito alla keyword parent, possiamo ripetere le precedenti procedure di inizializzazione. La chiamata al metodo setErrorMsgs infine, ci permette di impostare il messaggio di errore che verrà visualizzato nel caso in cui le password siano errate.
Il metodo checkPw si occuperà di gestire la nuova funzione di checking che andiamo ad aggiungere per controllare i valori delle password fornite dagli utenti. Il suo comportamento fondamentale è identico a quello di tutti gli altri metodi di checking ereditati da FormCheck.
A questo punto non ci resta che finalizzare la classe ridefinendo il metodo pubblico checkAll, che ovviamente conterrà la chiamata al nuovo metodo checkPw:
// ...
public function checkAll() {
$this->checkName();
$this->checkLastname();
$this->checkEMail();
$this->checkYear();
$this->checkPw();
return $this->getErrorMsg();
}
}
Ora la classe è completa e pronta per essere inizializzata:
// ----------------------------------------
// Implementazione
// ----------------------------------------
$form = new MoreFormCheck();
if(!$form->checkAll()) {
exit();
}
else {
echo "<p><strong>Nome:</strong>" . $form->clean['name'] . "</p>";
echo "<p><strong>Cognome:</strong>" . $form->clean['lastname'] . "</p>";
echo "<p><strong>Mail:</strong>" . $form->clean['email'] . "</p>";
echo "<p><strong>Year:</strong>" . $form->clean['year'] . "</p>";
echo "<p><strong>Password:</strong>" . $form->clean['pw'] . "</p>";
}
Sessioni PHP: cosa sono, come si usanoDalla configurazione di PHP, alla gestione delle sessioni in un... |
Continuous Integration: automatizziamo i client con PhingContinuous Integration: automatizziamo i client con Phing. Esempi... |
Archiviazione delle applicazioni PHP con PharCome incorporare intere applicazioni PHP all'interno di un singolo... |
I traits in PHP 5.4Cosa sono, a cosa servono e come si unsano i traits, la novità per... |
PHP 5.4: il web server integratoImpara ad usare il web server integrato nella versione 5.4 di PHP:... |
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Guida PHP con Windows e IISInstallare ambienti per lo sviluppo e la produzione di applicazioni... |
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 |