Magična metoda toString v OOP v PHP
Prva magična metoda, ki jo bomo
preučili, se imenuje __toString.
Pokliče se, ko poskušamo primerek
razreda pretvoriti v niz. Poglejmo, kaj
to pomeni. Recimo, da imamo podan razred
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;
}
}
?>
Ustvarimo objekt tega razreda:
<?php
$user = new User('john', 25);
?>
Zdaj pa poskusimo ustvarjeni objekt
izpisati s pomočjo echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Poskus izpisa objekta s pomočjo echo
pomeni pretvorbo v niz. V tem
primeru bo PHP vrnil napako, ker se preprosto
objekti ne morejo pretvoriti v niz.
Da odstranimo napako, moramo
eksplicitno povedati PHP-ju, kaj naj stori, ko
poskuša objekt pretvoriti v niz. Za
to obstaja magična metoda
__toString.
Če v kodi našega razreda naredimo takšno metodo,
bo rezultat te metode (torej tisto, kar
vrne preko return) postal nizovni
predstavitev objekta.
Recimo, da želimo, da se ob poskusu izpisa
objekta s pomočjo echo, izpiše uporabnikovo
ime. Torej naredimo metodo __toString
in v njej vrnemo vrednost lastnosti name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implementiramo navedeno metodo:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Preverimo:
<?php
$user = new User('john', 25);
echo $user; // izpiše 'john' - vse deluje!
?>
Naredite razred User, v katerem bodo
lastnosti name in surn.
Naredite tako, da se ob
izpisu objekta s pomočjo echo na zaslon
izpiše niz z imenom in priimkom uporabnika.