29. Metodi Magici
PHP 5 ci fornisce un supporto aggiuntivo per potenziare le nostre classi attraverso la definizione di determinati metodi detti Metodi Magici, in quanto sono nativi di PHP e non è possibile dichiararne di propri con lo stesso nome (riservati).
Vediamo subito una lista di questi metodi e i servizi che offrono :
- __toString() - Metodo per restituire l'oggetto sotto forma di stringa
- __set() - Permette l'overloading per assegnare un valore ad un attributo
- __get() - Consente l'overloading delle istruzioni di lettura di un attributo
- __isset() - Overloading del metodo isset() per gli attributi di una classe (disponibile da PHP 5.1.0)
- __unset() - Overloading del metodo unset() per gli attributi di una classe (disponibile da PHP 5.1.0)
- __call() - Permette l'overloading dei metodi di una classe
- __clone() - Consente l'overloading per la clonazione degli oggetti
- __autoload() - Funzione per l'auto-inclusione di file per classi non ancora definite
- __sleep() - Richiamato subito prima di una serializzazione di un oggetto
- __wakeup() - Richiamato subito dopo una serializzazione di un oggetto
- __set_state() - Metodo statico richiamato per le classi esportate con var_export() (disponibile da PHP 5.1.0)
Overload di __toString()
Prototipo della funzione :
string __toString()
|
Effettuando l'overloading di questa funzione, consentiremo a PHP 5 di trattare le istanze della nostra classe come stringhe, qualora venissero fatte su di esse operazioni come ad esempio la stampa su schermo con echo o ancora la concatenazione fra stringhe ecc... Non essendo supportato un tipo di casting implicito da Oggetto a Stringa, questo risulta un ottimo metodo per aggiungere tale supporto alle nostre classi : |
<?php
class Persona
{
private $nome;
private $cognome;
public function Persona($n, $c)
{
$this->nome = $n;
$this->cognome = $c;
}
public function __toString()
{ return $this->nome . " " . $this->cognome; }
}
$obj = new Persona("John", "Doe");
echo $obj; // Stampa "John Doe"
$stringa = "Ciao sono " . $obj;
echo $stringa; // Stampa "Ciao sono John Doe"
?>Nota : Prima di PHP 5.2.0, __toString() veniva chiamato solo in combinazione con echo e print.
Nei capitoli a seguire vedremo nel dettaglio l'overload degli altri Metodi Magici sopra elencati.
- Linguaggi:
- Tags:

