Magična metoda toString u OOP u PHP
Prva magična metoda koju ćemo
proučiti zove se __toString. Ona se
poziva prilikom pokušaja konverzije instance
klase u string. Hajde da shvatimo šta
to znači. Pretpostavimo da imamo datu ovakvu klasu
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;
}
}
?>
Hajde da kreiramo objekat ove klase:
<?php
$user = new User('john', 25);
?>
A sada pokušajmo da prikažemo kreirani objekat
preko echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Pokušaj da se objekat prikaže preko echo
i jeste konverzija u string. U ovom
slučaju PHP će prikazati grešku, jer se prosto
tako objekti ne mogu konvertovati u string.
Da bismo uklonili grešku, moramo
eksplicitno reći PHP-u šta da radi prilikom
pokušaja konverzije objekta u string. Za
to i postoji magična metoda
__toString.
Ako u kodu naše klase napravimo takvu metodu,
onda će rezultat te metode (odnosno ono što
ona vrati preko return) biti string reprezentacija
objekta.
Pretpostavimo da želimo da se prilikom pokušaja prikaza
objekta preko echo, prikaže ime
korisnika. Znači napravićemo metodu __toString
i vratiti u njoj vrednost svojstva name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implementiramo navedenu metodu:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Hajde da proverimo:
<?php
$user = new User('john', 25);
echo $user; // prikazaće 'john' - sve radi!
?>
Napravite klasu User, u kojoj će biti
svojstva name i surn.
Uredite tako da prilikom
prikaza objekta preko echo na ekranu
bude prikazan string sa imenom i prezimenom korisnika.