Kaedah Ajaib toString dalam OOP dalam PHP
Kaedah ajaib pertama yang akan kita
pelajari dipanggil __toString. Ia
dipanggil apabila cuba menukar contoh (instance)
kelas kepada rentetan (string). Mari kita fahami apa
maksudnya. Katakan kita mempunyai kelas
User seperti berikut:
<?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;
}
}
?>
Mari kita cipta objek kelas ini:
<?php
$user = new User('john', 25);
?>
Sekarang mari kita cuba paparkan objek yang dicipta
melalui echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Cubaan untuk memaparkan objek melalui echo
adalah penukaran kepada rentetan. Dalam kes ini,
PHP akan memaparkan ralat, kerana objek tidak boleh
ditukar kepada rentetan secara terus.
Untuk menghilangkan ralat, kita perlu
menyatakan dengan jelas kepada PHP, apa yang perlu dilakukan
apabila cuba menukar objek kepada rentetan. Untuk
tujuan itulah kaedah ajaib
__toString wujud.
Jika kita membuat kaedah sedemikian dalam kod kelas kami,
maka hasil kaedah ini (iaitu apa yang
dipulangkannya melalui return) akan menjadi perwakilan
rentetan bagi objek tersebut.
Katakan kita mahu, apabila cuba memaparkan
objek melalui echo, nama
pengguna dipaparkan. Ini bermakna kita perlu membuat kaedah __toString
dan memulangkan nilai sifat name di dalamnya:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Kami melaksanakan kaedah yang dinyatakan:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Mari kita uji:
<?php
$user = new User('john', 25);
echo $user; // akan memaparkan 'john' - semuanya berfungsi!
?>
Buat kelas User, di mana terdapat
sifat name dan surn.
Lakukan supaya apabila
objek dipaparkan melalui echo pada skrin,
rentetan dengan nama dan nama keluarga pengguna dipaparkan.