PHP да ООП да __toString магик методаси
Биз ўрганадиган биринчи магик метода
__toString деб аталади. У
класс нусхасини сатрга айлантиришга
уринилганда чақирилади. Бу нимани
англатади, биламиз. Бизда 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;
}
}
?>
Келгинг, бу класснинг объектини ярайлик:
<?php
$user = new User('john', 25);
?>
Энди яратилган объектни echo
орқали чиқариб кўришга уринайлик:
<?php
$user = new User('john', 25);
echo $user;
?>
echo орқали объектни чиқаришга уриниш
анан сатрга айлантиришдир. Бу ҳолатда
PHP хато берadi, чунки объектлар ўзи-ўзича
сатрга айланмайди.
Хатолиқни йўқотиш учун биз PHP га объектни
сатрга айлантиришга уринилганда нима қилиш
керэклигини аниқ айтишимиз керак. Ана шу
учун __toString магик методаси мавжуд.
Агар бизнинг класс кодимизда бундай метода қилсак,
у ҳолда у методанинг натижаси (яъни return
орқали қайтарадиган нарса) объектнинг сатр
кориниши бўлади.
Фароз қилайлик, биз echo орқали объектни
чиқарганда, фойдаланувчининг исми чиқадишини
истаймиз. Демак, __toString методасини
яратиб, унинг ичида name хусусиятининг
қийматини қайтарамиз:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Кўрсатилган методани амалга оширамиз:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Текширамиз:
<?php
$user = new User('john', 25);
echo $user; // 'john' ни чиқаради - ҳаммаси ишлайди!
?>
User классни яранг, унинг ичида
name ва surn хусусиятлари бўлсин.
Объект echo орқали
чиқарилганда, экранга фойдаланувчининг
исми ва фамиляси билан сатр чиқадиган қилинг.