Magiškas metodas toString OOP PHP
Pirmasis magiškas metodas, kurį
išmoksime, vadinamas __toString. Jis
iškviečiamas bandant paversti klasės egzempliorių
į eilutę. Pažiūrėkime, ką tai reiškia. Tarkime, kad turime tokią 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;
}
}
?>
Sukurkime šios klasės objektą:
<?php
$user = new User('john', 25);
?>
Dabar pabandykime atspausdinti sukurtą objektą
naudojant echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Bandymas išvesti objektą naudojant echo
ir yra pavertimas į eilutę. Šiuo
atveju PHP išmes klaidą, nes tiesiog
taip objektai nepaverčiami į eilutę.
Kad pašalintume klaidą, turime
aiškiai pasakyti PHP, ką daryti bandant
paversti objektą į eilutę. Tam
ir egzistuoja magiškas metodas
__toString.
Jei mūsų klasės kode sukursime šį metodą,
tada šio metodo rezultatas (tai, ką
jis grąžina per return) ir bus objekto
eilutinis atvaizdas.
Tarkime, kad norime, kad bandant išvesti
objektą naudojant echo, būtų rodomas vartotojo
vardas. Taigi, sukurkime metodą __toString
ir jame grąžinkime savybės name reikšmę:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Įgyvendiname nurodytą metodą:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Patikrinkime:
<?php
$user = new User('john', 25);
echo $user; // išves 'john' - viskas veikia!
?>
Sukurkite klasę User, kurioje bus
savybės name ir surn.
Padarykite taip, kad
išvedus objektą per echo į ekraną
būtų rodoma eilutė su vartotojo vardu ir pavarde.