Magische methode toString in OOP in PHP
De eerste magische methode die we
zullen bestuderen, heet __toString. Hij
wordt aangeroepen bij een poging een instantie
van een klasse naar een string te converteren. Laten we eens kijken wat
dit betekent. Stel we hebben de volgende klasse
User:
<?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;
}
}
?>
Laten we een object van deze klasse aanmaken:
<?php
$user = new User('john', 25);
?>
En laten we nu proberen het gemaakte object
weer te geven via echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Een poging om een object weer te geven via echo
is een conversie naar een string. In dit
geval zal PHP een fout geven, omdat objecten
niet zomaar naar een string geconverteerd kunnen worden.
Om de fout op te lossen, moeten we
expliciet tegen PHP zeggen wat het moet doen bij
een poging om een object naar een string te converteren. Hiervoor
bestaat de magische methode
__toString.
Als we zo'n methode in onze klasse implementeren,
dan zal het resultaat van deze methode (dat wil zeggen, wat
hij teruggeeft via return) de stringrepresentatie
van het object zijn.
Stel we willen dat bij een poging het
object weer te geven via echo, de naam
van de user wordt getoond. Dan maken we de methode __toString
en retourneren we daarin de waarde van de eigenschap name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implementeren van de gespecificeerde methode:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Laten we het testen:
<?php
$user = new User('john', 25);
echo $user; // geeft 'john' weer - het werkt!
?>
Maak een klasse User, met daarin de
eigenschappen name en surn.
Zorg ervoor dat bij het
weergeven van het object via echo op het scherm
een string met de voornaam en achternaam van de gebruiker wordt weergegeven.