31. Il metodo Magico __get()
Overload di __get()
Prototipo della funzione :
mixed __get(string name)
Al contrario di __set(), l'overload di questo metodo ci consente di effettuare operazioni sulla lettura di un attributo.
Il metodo __get viene richiamato quando si tenta di accedere ad attributi con restrizioni (private o protected) o ad attributi non dichiarati.
Vediamo un semplice esempio :
<?php
class Utente
{
private $nickname;
private $password;
public $dataiscrizione;
public function Utente($n, $p)
{
$this->nickname = $n;
$this->password = $p;
$this->dataiscrizione = "01-01-1970";
}
public function __get($attributo)
{
switch ($attributo)
{
case "nickname" :
return "Nickname : " . $this->nickname;
break;
case "password" :
return "Password : " . $this->password;
break;
default :
return "Attributo inesistente";
break;
}
}
}
$utente = new Utente("johndoe", "mypassword");
echo $utente->nickname . "<br />";
echo $utente->password . "<br />";
echo $utente->dataiscrizione . "<br />";
echo $utente->nonesisto;
?>L'esempio produce questo risultato :
Nickname : johndoe
Password : mypassword
01-01-1970
Attributo inesistente
|
Le prime due echo richiamano __get() e stampano correttamente i due attributi private ossia $nickname e $password, a cui __get() applica anche un prefisso col nome dell'attributo, come si evince dai primi due case della switch. La terza echo invece stampa direttamente l'attributo $dataiscrizione senza passare da __get(), poichè tale attributo è esistente ed accessibile essendo dichiarato come public. Infine l'ultima echo passa nuovamente per __get() stampando la stringa "Attributo inesistente" come programmato nell'opzione di default della switch. |
- Linguaggi:
- Tags:
