Den magiske metoden toString i OOP i PHP
Den første magiske metoden vi skal
lære om, heter __toString. Den
kalles når man prøver å konvertere en instans
av en klasse til en streng. La oss se nærmere på hva
dette betyr. La oss si 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;
}
}
?>
La oss opprette et objekt av denne klassen:
<?php
$user = new User('john', 25);
?>
Og nå prøver vi å vise det opprettede objektet
via echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Forsøket på å gjengi et objekt via echo
er nettopp en konvertering til streng. I dette
tilfellet vil PHP gi en feil, fordi objekter
ikke kan konverteres til en streng så enkelt.
For å fjerne feilen, må vi
eksplisitt fortelle PHP hva den skal gjøre når
den prøver å konvertere et objekt til en streng. For
dette formålet finnes den magiske metoden
__toString.
Hvis vi lager en slik metode i koden vår for klassen,
vil resultatet av denne metoden (det vil si det
den returnerer via return) være strengrepresentasjonen
av objektet.
La oss si at vi ønsker at når vi prøver å vise
objektet via echo, skal brukerens navn
vises. Da lager vi metoden __toString
og returnerer i den verdien fra egenskapen name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implementerer den angitte metoden:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
La oss teste:
<?php
$user = new User('john', 25);
echo $user; // vil vise 'john' - alt fungerer!
?>
Lag en klasse User, der det skal være
egenskaper name og surn.
Gjør slik at når
objektet vises via echo på skjermen,
skal en streng med brukerens fornavn og etternavn vises.