⊗ppOpMgTS 87 of 107 menu

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 namesurn xassələri olsun. Elə edin ki, obyekt echo ilə çıxarıldıqda ekranda istifadəçinin adı və soyadı olan sətir çıxsın.

azbydeenesfrkakkptruuz