Den magiske metode toString i OOP i PHP
Den første magiske metode, som vi
vil studere, hedder __toString. Den
kaldes ved forsøg på at konvertere en instans af
en klasse til en streng. Lad os finde ud af, hvad
det betyder. Lad os sige, at vi har følgende 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;
}
}
?>
Lad os oprette et objekt af denne klasse:
<?php
$user = new User('john', 25);
?>
Og lad os nu prøve at vise det oprettede objekt
via echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Forsøget på at udskrive et objekt via echo
er netop konvertering til en streng. I dette
tilfælde vil PHP give en fejl, fordi objekter
ikke bare sådan kan konverteres til en streng.
For at fjerne fejlen skal vi
eksplicit fortælle PHP, hvad den skal gøre, når
der forsøges at konvertere et objekt til en streng. For
det findes den magiske metode
__toString.
Hvis vi laver en sådan metode i koden af vores klasse,
så vil resultatet af denne metode (det vil sige, hvad
den returnerer via return) være objektets
strengrepræsentation.
Lad os sige, at vi ønsker, at når der forsøges at vise
objektet via echo, så skal brugerens navn
vises. Så vi laver metoden __toString
og returnerer værdien af egenskaben name i den:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implementer den angivne metode:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Lad os teste:
<?php
$user = new User('john', 25);
echo $user; // vil udskrive 'john' - det virker!
?>
Lav en klasse User, hvori der vil være
egenskaber name og surn.
Gør så, at når
objektet udskrives via echo på skærmen,
vil en streng med brugerens fornavn og efternavn blive vist.