PHP Dasturlashda OOPda __toString sehrli metodi
Biz o'rganadigan birinchi sehrli metod
__toString deb ataladi. U klass
namunasini satrga o'tkazishga urinishda
chaqiriladi. Keling, bu nima deganini
aniqlashtiramiz. Aytaylik, bizda quyidagi
User klassi mavjud:
<?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;
}
}
?>
Keling, ushbu klassning ob'ektini yaratamiz:
<?php
$user = new User('john', 25);
?>
Endi yaratilgan ob'ektni echo orqali
chiqarishga harakat qilaylik:
<?php
$user = new User('john', 25);
echo $user;
?>
Ob'ektni echo orqali chiqarishga urinish
satrga o'zgartirishdir. Bunday
holatda PHP xatolik beradi, chunki oddiygina
ob'ektlar satrga aylantirilmaydi.
Xatolikni olib tashlash uchun biz
PHP ga ob'ektni satrga aylantirishga urinishda
nima qilish kerakligini aniq aytishimiz kerak. Buning
uchun __toString sehrli metodi mavjud.
Agar bizning klassimiz kodida bunday metod qilsak,
ushbu metodning natijasi (ya'ni u
return orqali qaytaradigan narsa) ob'ektning satrliq
ifodasi bo'ladi.
Aytaylik, biz ob'ektni echo orqali chiqarishga
urinishda, foydalanuvchi ismi
chiqarilishini istaymiz. Demak, __toString metodini
qilamiz va unda name xususiyatining qiymatini qaytaramiz:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Ko'rsatilgan metodni amalga oshiramiz:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Keling tekshiramiz:
<?php
$user = new User('john', 25);
echo $user; // 'john' ni chiqaradi - hammasi ishlaydi!
?>
User klassini yarating, unda
name va surn xususiyatlari bo'lsin.
Ob'ekt echo orqali
chiqarilganda ekranda foydalanuvchi ismi va familiyasi
chiqadigan satr chiqishiga erishing.