Magische Methode toString in OOP in PHP
Die erste magische Methode, die wir
studieren werden, heißt __toString. Sie
wird aufgerufen, wenn versucht wird, eine Instanz
einer Klasse in einen String umzuwandeln. Lassen Sie uns
verstehen, was das bedeutet. Angenommen, wir haben die folgende 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;
}
}
?>
Lassen Sie uns ein Objekt dieser Klasse erstellen:
<?php
$user = new User('john', 25);
?>
Versuchen wir nun, das erstellte Objekt
mit echo auszugeben:
<?php
$user = new User('john', 25);
echo $user;
?>
Der Versuch, ein Objekt mit echo
auszugeben, ist eine Umwandlung in einen String. In diesem
Fall wird PHP einen Fehler ausgeben, da Objekte nicht einfach so
in Strings umgewandelt werden können.
Um den Fehler zu beheben, müssen wir
PHP explizit angeben, was bei einem
Versuch der Umwandlung eines Objekts in einen String zu tun ist. Dafür
gibt es die magische Methode
__toString.
Wenn wir eine solche Methode in den Code unserer Klasse einfügen,
dann wird das Ergebnis dieser Methode (also das, was
sie via return zurückgibt) die String-Repräsentation
des Objekts sein.
Angenommen, wir möchten, dass bei einem Versuch, das
Objekt mit echo auszugeben, der Name
des Benutzers ausgegeben wird. Dann erstellen wir die Methode __toString
und geben darin den Wert der Eigenschaft name zurück:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Wir implementieren die angegebene Methode:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Prüfen wir es:
<?php
$user = new User('john', 25);
echo $user; // gibt 'john' aus - alles funktioniert!
?>
Erstellen Sie eine Klasse User, in der es
Eigenschaften name und surn gibt.
Sorgen Sie dafür, dass bei der
Ausgabe des Objekts via echo auf dem Bildschirm
ein String mit dem Vor- und Nachnamen des Benutzers ausgegeben wird.