Magická metóda toString v OOP v PHP
Prvá magická metóda, ktorú
študujeme, sa volá __toString. Je
volaná pri pokuse o prevedenie inštancie
triedy na reťazec. Poďme zistiť, čo
to znamená. Predpokladajme, že máme danú takúto triedu
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;
}
}
?>
Vytvorme objekt tejto triedy:
<?php
$user = new User('john', 25);
?>
A teraz sa pokúsme vypísať vytvorený objekt
cez echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Pokus o vykonanie výstupu objektu cez echo
je premena na reťazec. V tomto
prípade PHP vypíše chybu, pretože jednoducho
tak sa objekty na reťazec neprevedú.
Aby sme odstránili chybu, musíme
explicitne povedať PHP, čo robiť pri
pokuse o premenu objektu na reťazec. Pre
to existuje magická metóda
__toString.
Ak v kóde našej triedy vytvoríme takúto metódu,
tak výsledok tejto metódy (teda to, čo
vráti cez return) bude reťazcovým
vyjadrením objektu.
Predpokladajme, že chceme, aby pri pokuse o výstup
objektu cez echo, sa vypísalo meno
používateľa. Takže urobme metódu __toString
a vráťme v nej hodnotu vlastnosti name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Realizujeme uvedenú metódu:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Skontrolujme:
<?php
$user = new User('john', 25);
echo $user; // vypíše 'john' - všetko funguje!
?>
Vytvorte triedu User, v ktorej budú
vlastnosti name a surn.
Urobte tak, aby pri
výpise objektu cez echo na obrazovku
sa vypísal reťazec s menom a priezviskom používateľa.