Metode Ajaib toString dalam OOP di PHP
Metode ajaib pertama yang akan kita
pelajari disebut __toString. Metode ini
dipanggil ketika ada upaya untuk mengubah instance
kelas menjadi string. Mari kita pahami apa
artinya. Misalkan kita memiliki 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 buat objek dari kelas ini:
<?php
$user = new User('john', 25);
?>
Sekarang mari kita coba mencetak objek yang dibuat
melalui echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Upaya untuk menampilkan objek melalui echo
itulah yang disebut konversi ke string. Dalam
kasus ini PHP akan memberikan error, karena
objek tidak bisa begitu saja diubah menjadi string.
Untuk menghilangkan error, kita harus
secara eksplisit memberi tahu PHP apa yang harus dilakukan
ketika ada upaya untuk mengubah objek menjadi string. Untuk
itulah metode ajaib
__toString ada.
Jika kita membuat metode seperti itu dalam kode
kelas kita, maka hasil dari metode tersebut (yaitu apa yang
dikembalikannya via return) akan menjadi representasi
string dari objek.
Misalkan kita ingin, ketika ada upaya untuk menampilkan
objek melalui echo, yang keluar adalah nama
pengguna. Berarti kita buat metode __toString
dan kembalikan di dalamnya nilai properti name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Kita implementasikan metode yang dimaksud:
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 menampilkan 'john' - semuanya berhasil!
?>
Buatlah kelas User, yang di dalamnya terdapat
properti name dan surn.
Buatlah sedemikian rupa sehingga ketika
objek ditampilkan melalui echo ke layar,
yang keluar adalah string berisi nama depan dan nama belakang pengguna.