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 ката берет, анткени объектер жөнөкөй
жол менен сапка айланбайт.
Катаны жоюу үчүн, биз
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 аркылуу экранга чыгарылганда
колдонуучунун аты жана фамилиясы сап түрүндө чыксын.