La méthode magique toString en POO en PHP
La première méthode magique que nous
allons étudier s'appelle __toString. Elle
est appelée lors d'une tentative de conversion d'une instance
de classe en chaîne de caractères. Voyons ce que
cela signifie. Supposons que nous ayons une classe
User comme celle-ci :
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Créons un objet de cette classe :
<?php
$user = new User('john', 25);
?>
Maintenant, essayons d'afficher l'objet créé
via echo :
<?php
$user = new User('john', 25);
echo $user;
?>
Tenter d'afficher un objet via echo
est une conversion en chaîne de caractères. Dans ce
cas, PHP générera une erreur, car les objets
ne peuvent pas être convertis en chaîne aussi simplement.
Pour supprimer l'erreur, nous devons
indiquer explicitement à PHP quoi faire lors
d'une tentative de conversion de l'objet en chaîne. C'est
pour cela qu'existe la méthode magique
__toString.
Si nous créons une telle méthode dans le code de notre classe,
alors le résultat de cette méthode (c'est-à-dire ce
qu'elle retourne via return) sera la représentation
chaîne de l'objet.
Supposons que nous voulions que lors d'une tentative d'affichage
de l'objet via echo, le nom de
l'utilisateur soit affiché. Nous devons donc créer la méthode __toString
et retourner la valeur de la propriété name :
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implémentons la méthode spécifiée :
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Vérifions :
<?php
$user = new User('john', 25);
echo $user; // affichera 'john' - tout fonctionne !
?>
Créez une classe User, dans laquelle il y aura
les propriétés name et surn.
Faites en sorte que lors de
l'affichage de l'objet via echo à l'écran,
une chaîne avec le prénom et le nom de l'utilisateur soit affichée.