PHP-də OOP-də sehrli metod toString
Öyrənəcəyimiz ilk sehrli metod,
__toString adlanır. O,
sinif nümunəsini sətirə çevirmək cəhdi
edildikdə işə düşür. Gəlin bunun nə
demək olduğunu anlayaq. Tutaq ki, bizdə
User sinifi var:
<?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;
}
}
?>
Gəlin bu sinifin obyektini yaradaq:
<?php
$user = new User('john', 25);
?>
İndi isə yaratdığımız obyekti
echo vasitəsilə çıxmağa çalışaq:
<?php
$user = new User('john', 25);
echo $user;
?>
Obyekti echo ilə çıxmaq cəhdi
sətirə çevirmək deməkdir. Bu
halda PHP xəta verəcək, çünki obyektlər
beləcə sətirə çevrilə bilməz.
Xətanı aradan qaldırmaq üçün biz
PHP-yə aydın şəkildə deməliyik ki, obyekti
sətirə çevirmək cəhdi edildikdə nə
etməlidir. Bunun üçün də sehrli metod
__toString mövcuddur.
Əgər sinifimizin kodunda belə bir metod etsək,
onda bu metodun nəticəsi (yəni onun
return ilə qaytardığı) obyektin sətir
şəklində ifadəsi olacaq.
Tutaq ki, biz istəyirik ki,
obyekt echo ilə çıxarıldıqda, istifadəçinin
adı çıxsın. Deməli, __toString metodunu
edək və onun içərisində name xassəsinin
qiymətini qaytaraq:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Göstərilən metodu reallaşdıraq:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Yoxlayaq:
<?php
$user = new User('john', 25);
echo $user; // 'john' çıxaracaq - hər şey işləyir!
?>
User sinifi edin, onda
name və surn
xassələri olsun.
Elə edin ki,
obyekt echo ilə çıxarıldıqda
ekranda istifadəçinin adı və soyadı olan sətir çıxsın.