Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 49 di 50
  • livello avanzato
Indice lezioni

Aggiungere funzionalità personalizzate

Aggiungere delle funzionalità personalizzate ed estendere l'applicazione in modo facile e veloce
Aggiungere delle funzionalità personalizzate ed estendere l'applicazione in modo facile e veloce
Link copiato negli appunti

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>";
}

Ti consigliamo anche