Setelah menyelesaikan materi ini, mahasiswa diharapkan mampu:
Anonymous class adalah class tanpa nama yang dibuat secara langsung saat dibutuhkan. Anonymous class sering digunakan dalam pembuatan mock object untuk pengujian, atau ketika kita memerlukan class sekali pakai yang tidak perlu didefinisikan secara eksplisit. Meskipun cara kerjanya sama seperti class biasa, anonymous class tidak memiliki nama tidak bisa digunakan kembali di tempat lain.
Anonymous class dapat digambarkan seperti kita membuat alat sekali pakai langsung di tempat—tanpa memberi nama alatnya—dan langsung menggunakannya di situ juga. Misalnya, sebuah class biasanya seperti memesan kartu identitas dengan nama resmi yang bisa dipakai kapan saja. Sementara anonymous class seperti menulis nama di secarik kertas untuk sekali digunakan saja—langsung dibuang setelah selesai.
Berikut adalah contoh dasar anonymous class dalam PHP:
Petunjuk:
RUN
<?php class Orang { public $nama = ''; function getNama() { return $this->nama; } } // Membuat object dari anonymous class yang mewarisi class Orang $anonim = new class() extends Orang { public function getNama() { // Mengembalikan nilai tetap untuk tujuan pengujian return "Budi"; } }; // Memanggil method dari anonymous class echo $anonim->getNama(); // Output: Budi
Class Orang memiliki properti $nama dan method getNama(). Dalam contoh ini, kita membuat anonymous class yang mewarisi Orang menggunakan new class() extends Orang. Method getNama() dioverride untuk selalu mengembalikan string "Budi". Penting untuk diingat bahwa anonymous class harus diakhiri dengan tanda titik koma ; karena dideklarasikan sekaligus dibuat objeknya, berbeda dengan class biasa.
Class Orang
$nama
getNama()
Orang
new class() extends Orang
"Budi"
;
Anonymous class juga bisa digunakan untuk mengimplementasikan interface.
<?php interface Kendaraan { public function jalankan(); } // Membuat object dari anonymous class yang mengimplementasikan interface Kendaraan $mobil = new class() implements Kendaraan { public function jalankan() { return "Mobil sedang berjalan..."; } }; // Memanggil method dari anonymous class echo $mobil->jalankan(); // Output: Mobil sedang berjalan...
Contoh di atas menunjukkan penggunaan anonymous class yang mengimplementasikan interface Kendaraan. Interface mendefinisikan method jalankan(), yang kemudian diimplementasikan dalam anonymous class tanpa membuat class terpisah. Pemanggilan $mobil->jalankan() akan menampilkan "Mobil sedang berjalan...". Anonymous class sangat berguna untuk pembuatan object sederhana yang hanya digunakan satu kali.
mengimplementasikan interface
Kendaraan
jalankan()
$mobil->jalankan()
"Mobil sedang berjalan..."
Anonymous class juga bisa memiliki constructor untuk menerima parameter saat dibuat.
<?php $pesan = new class("Selamat datang!") { private $teks; public function __construct($teks) { $this->teks = $teks; } public function tampilkanPesan() { return $this->teks; } }; // Memanggil method dari anonymous class echo $pesan->tampilkanPesan(); // Output: Selamat datang!
Contoh di atas menggunakan anonymous class dengan constructor yang menerima parameter $teks. Nilai parameter disimpan dalam property $teks, kemudian ditampilkan melalui method tampilkanPesan(). Saat objek $pesan dipanggil, hasil yang ditampilkan adalah "Selamat datang!". Ini menunjukkan bahwa anonymous class dapat memiliki constructor dan method seperti class biasa.
constructor
$teks
tampilkanPesan()
$pesan
"Selamat datang!"
Namun, meskipun fleksibel dan efisien untuk penggunaan sekali pakai, anonymous class memiliki dua keterbatasan penting yang perlu diperhatikan:
Gambar 6 Keterbatasan Anonymous Class dalam PHP
serialize()
Untuk menguji pemahaman kamu tentang penggunaan anonymous class dalam OOP PHP, kerjakan aktivitas berikut ini!
Lengkapilah kode program berikut agar dapat mencetak hasil keluaran "Pengguna sementara: Anon" menggunakan anonymous class yang mewarisi class Pengguna. Pastikan getNama() di-override dengan benar di dalam anonymous class.
Pengguna
<?php class Pengguna { public function getNama() { return "Nama asli"; } } $anon = new class() extends Pengguna { public function ___() { return "___"; } }; echo $anon->___(); ?>
Seret potongan kode berikut ke tempat yang kosong: