Методи ҷодуии toString дар ООП дар PHP
Аввалин методи ҷодуие, ки мо
меомӯзем, __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 ба экран чоп карда мешавад,
сатр бо ному насаби корбар чоп шавад.