Guida Php – 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.

Versione originale dell’articolo

Lezione Precedente -> Guida Php – Serializzare gli oggetti

Lezione Successiva -> Guida Php – Il metodo Magico __set()

Tags: , ,

Lascia un Commento

Connect with Facebook