PHP Refactoring – Lez. 2: proprietà array di una classe
Oggi parleremo delle proprietà composte di una classe, ovvero di proprietà contenenti un array.
Abbiamo visto nella lezione precedente (PHP Refactoring – Lez. 1: proprietà di una classe) come scrivere le proprietà semplici di una classe.
Per quanto riguarda le proprietà composte valgono le regole di naming convention introdotte nel precedente tutorial, eccetto i metodi di accesso alle stesse. Di seguito lo standard da seguire a livello di classe.
Metodo addXXX
Per aggiungere un elemento ad una proprietà composta utilizzeremo un metodo con la seguente signature:
public function addXXX($valore, $chiave=null)
Dove XXX deve essere sostituito con il nome della proprietà.
Di seguito è fornito un esempio:
|
class Classe { private $alunni; public function addAlunni($valore, $chiave=null) { if (is_array($valore)) { foreach($valore as $posizione => $elemento){ if ($chiave!=null) { $this->alunni[$posizione] = $elemento; } else { $this->alunni[] = $elemento; } } } else if ($chiave == null) { $this->alunni[] = $valore; } else { $this->alunni[$chiave] = $valore; } } } |
Come si può notare i parametri da passare sono due: il primo obbligatorio, il secondo opzionale.
Non appena entriamo nel metodo addXXX viene controllato se il parametro $valore è un array. in caso affermativo cicliamo su quest’ultimo, e se il parametro $chiave è null accodiamo gli elementi nella proprietà; se invece $chiave è diverso da null inseriremo il valore $elemento nella chiave $posizione.
Nel caso $valore non sia un array e $chiave sia uguale a null inseriremo $valore direttamente nella proprietà $alunni.
Infine l’ultimo caso è se il parametro $chiave è valorizzato; in tal caso inseriremo $valore nella posizione $chiave della proprietà $alunni della classe.
Metodo removeXXX
Per rimuovere un elemento da una proprietà composta utilizzeremo un metodo con la seguente signature:
public function removeXXX($chiave=null)
Dove XXX deve essere sostituito con il nome della proprietà.
Di seguito è fornito un esempio:
|
class Classe { private $alunni; public function removeAlunni($chiave=null) { if (is_array($chiave)) { foreach($chiave as $posizione=> $valore){ unset($this->alunni[$valore]); } } else if ($chiave == null) { $this->alunni = array(); } else { unset($this->alunni[$chiave]); } } } |
Non appena entriamo nel metodo removeXXX viene controllato se il parametro $chiave è un array. in caso affermativo cicliamo su quest’ultimo, ed eliminiamo tutti gli elementi alle posizioni corrispondenti ai valori contenuti nel parametro del metodo.
Nel caso $chiave non sia un array ed sia uguale a null resetteremo la proprietà $alunni.
Infine l’ultimo caso è se il parametro $chiave è valorizzato; in tal caso elimineremo il valore corrispondente alla posizione $chiave nella proprietà $alunni della classe.
Metodo getXXX
Per recuperare degli elementi da una proprietà composta utilizzeremo un metodo con la seguente signature:
public function getXXX($chiave=null)
Dove XXX deve essere sostituito con il nome della proprietà.
Di seguito è fornito un esempio:
|
class Classe { private $alunni; public function getAlunni($chiave=null) { if (is_array($chiave)) { $elementi = array(); foreach($chiave as $posizione=> $valore){ $elementi[$valore] = $this->alunni[$valore]; } return $elementi; } else if ($chiave == null) { return $this->alunni; } return $this->alunni[$chiave]; } } |
Non appena entriamo nel metodo getXXX viene controllato se il parametro $chiave è un array. in caso affermativo cicliamo su quest’ultimo, ed alla fine ritorniamo un array contenente i valori degli elementi richiesti.
Nel caso $chiave non sia un array ed sia uguale a null restituiremo tutta la proprietà $alunni.
Infine l’ultimo caso corrisponde al parametro $chiave valorizzato; in tal caso restituiremo il valore corrispondente alla posizione $chiave nella proprietà $alunni della classe.
Chiudiamo la lezione assemblando tutto il codice finora scritto e applicandolo ad un piccolo esempio, chiarificatore:





Loading ...





Commenti recenti