La fonction __toString() est chargée de retourner une représentation textuelle d'un objet.

De cette manière un objet peut fournir un aperçu de son état, sous la forme d'une chaîne de caractères.

class Personne {
   private $civilite;
   private $nom;
   private $prenom;
   private $adresse;
   private $telephone;
   public function __construct(
                            $civilite,
                            $nom,
                            $prenom,
                            $adresse,
                            $telephone){
      $this->civilite = $civilite;
      $this->nom = $nom;
      $this->prenom = $prenom;
      $this->adresse = $adresse;
      $this->telephone = $telephone;
   }
   
   public function __toString(){
    return '[' . $this->civilite . ', '
               . $this->nom . ', '
               . $this->prenom . ', '
               . $this->adresse . ', '
               . $this->telephone . ']';
   }
}

$personne = new Personne(
                     'Madame', 
                     'Waldec', 
                     'Anne', 
                     '75 rue Belleville 75010 Paris', 
                     0142152432);
//Appel implicite de la méthode __toString()
echo $personne;

La fonction __toString() est applelée automatiquement lorsque l'objet est appelé automatiquement à partir d'une commande echo ou print.

Néanmoins dans certaines conditions, la fonction toString() ne pourra être invoquées implicitement à l'exécution du programme.

  • Lorsque l'objet est associé à un opérateur de concaténation.
    echo 'Une chaine ' . $objet;
  • Lorsque l'objet se trouve au sein d'une chaine de caractères.
    echo "Une chaine $objet";
  • Lorsque l'objet subi une opération de conversion.
    echo (string)$objet;
  • Dans le premier cas, il est possible de pallier à ce problème en passant une liste de paramètres à la fonction echo.

    echo 'Une chaine ', $objet, 'Une autre chaine';