Magiczna metoda toString w OOP w PHP
Pierwsza magiczna metoda, którą
przeanalizujemy, nazywa się __toString. Jest
wywoływana przy próbie konwersji instancji
klasy na ciąg znaków. Dowiedzmy się, co
to oznacza. Załóżmy, że mamy taką klasę
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;
}
}
?>
Stwórzmy obiekt tej klasy:
<?php
$user = new User('john', 25);
?>
A teraz spróbujmy wyświetlić utworzony obiekt
przez echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Próba wyświetlenia obiektu przez echo
to właśnie konwersja na ciąg znaków. W tym
przypadku PHP zwróci błąd, ponieważ obiekty
nie są tak po prostu konwertowane na ciąg znaków.
Aby usunąć błąd, musimy
wyraźnie powiedzieć PHP, co zrobić przy
próbie konwersji obiektu na ciąg znaków. Do
tego właśnie służy magiczna metoda
__toString.
Jeśli w kodzie naszej klasy utworzymy taką metodę,
to wynik tej metody (czyli to, co
zwróci przez return) będzie reprezentacją
obiektu jako ciągu znaków.
Załóżmy, że chcemy, aby przy próbie wyświetlenia
obiektu przez echo, wyświetlała się nazwa
użytkownika. Zatem utwórzmy metodę __toString
i zwróćmy w niej wartość właściwości name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implementujemy wskazaną metodę:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Sprawdźmy:
<?php
$user = new User('john', 25);
echo $user; // wyświetli 'john' - wszystko działa!
?>
Utwórz klasę User, w której będą
właściwości name i surn.
Spowoduj, aby przy
wyświetlaniu obiektu przez echo na ekranie
wyświetlał się ciąg z imieniem i nazwiskiem użytkownika.