Ricerca personalizzata

PHP Refactoring – Lez. 2: proprietà array di una classe

Pubblicato da Nicola in Refactoring

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:

Pagine: 1 2

del.icio.us:PHP Refactoring - Lez. 2: proprietà array di una classe digg:PHP Refactoring - Lez. 2: proprietà array di una classe spurl:PHP Refactoring - Lez. 2: proprietà array di una classe wists:PHP Refactoring - Lez. 2: proprietà array di una classe simpy:PHP Refactoring - Lez. 2: proprietà array di una classe newsvine:PHP Refactoring - Lez. 2: proprietà array di una classe blinklist:PHP Refactoring - Lez. 2: proprietà array di una classe furl:PHP Refactoring - Lez. 2: proprietà array di una classe reddit:PHP Refactoring - Lez. 2: proprietà array di una classe fark:PHP Refactoring - Lez. 2: proprietà array di una classe blogmarks:PHP Refactoring - Lez. 2: proprietà array di una classe Y!:PHP Refactoring - Lez. 2: proprietà array di una classe smarking:PHP Refactoring - Lez. 2: proprietà array di una classe magnolia:PHP Refactoring - Lez. 2: proprietà array di una classe segnalo:PHP Refactoring - Lez. 2: proprietà array di una classe gifttagging:PHP Refactoring - Lez. 2: proprietà array di una classe oknotizie:PHP Refactoring - Lez. 2: proprietà array di una classe

Rispondi

Enter this code