PHP menyediakan beberapa fungsi untuk menganalisis object, seperti mengetahui class yang digunakan object, mengecek keberadaan method dalam object, serta mendapatkan daftar property dalam object.
Sebelum bekerja dengan object, kita bisa mengecek apakah suatu variabel merupakan object menggunakan is_object().
is_object()
Petunjuk:
RUN
<?php $variabel = new stdClass(); if (is_object($variabel)) { echo "Variabel ini adalah object."; } else { echo "Variabel ini bukan object."; }
Fungsi is_object() digunakan untuk memeriksa apakah suatu variabel merupakan object. Dalam contoh ini, new stdClass() digunakan untuk membuat object kosong, dan hasil dari is_object() akan menampilkan bahwa variabel tersebut adalah object.
new stdClass()
Gunakan get_class() untuk mengetahui class dari object yang diberikan.
get_class()
<?php class Kendaraan {} $mobil = new Kendaraan(); echo "Object ini berasal dari class: " . get_class($mobil);
Fungsi get_class() digunakan untuk mengetahui nama class dari sebuah object. Dalam contoh ini, object $mobil dibuat dari class Kendaraan, sehingga get_class($mobil) akan menghasilkan string "Kendaraan".
$mobil
Kendaraan
get_class($mobil)
"Kendaraan"
Sebelum memanggil method dalam object, kita bisa mengecek apakah method tersebut ada menggunakan method_exists().
method_exists()
<?php class Hewan { public function bersuara() { return "Suara hewan"; } } $kucing = new Hewan(); if (method_exists($kucing, "bersuara")) { echo $kucing->bersuara(); } else { echo "Method tidak ditemukan."; }
Fungsi method_exists() digunakan untuk memeriksa apakah suatu object memiliki method tertentu. Jika method ditemukan, maka akan dijalankan; jika tidak, program akan menampilkan pesan bahwa method tidak tersedia. Ini berguna untuk validasi sebelum memanggil method secara dinamis.
Jika kita mencoba memanggil method yang tidak ada, PHP akan menghasilkan error.
PHP menyediakan fungsi get_object_vars() untuk mendapatkan daftar property yang telah diatur dalam suatu object.
get_object_vars()
<?php class Manusia { public $nama; public $umur; } $orang = new Manusia(); $orang->nama = "Budi"; $orang->umur = 25; $propertyObject = get_object_vars($orang); print_r($propertyObject);
Fungsi get_object_vars() digunakan untuk mengambil semua properti yang dapat diakses secara publik dari sebuah object. Hasilnya akan dikembalikan dalam bentuk array asosiatif yang berisi nama dan nilai dari masing-masing properti.
Catatan: get_object_vars() hanya mengembalikan property yang sudah diatur dalam object. Property yang belum diberi nilai akan tetap muncul dengan nilai NULL.
NULL
Jika suatu object merupakan turunan dari class lain, kita bisa mengetahui class induknya menggunakan get_parent_class().
get_parent_class()
<?php class Hewan {} class Kucing extends Hewan {} $kucing = new Kucing(); echo "Class induknya adalah: " . get_parent_class($kucing);
Fungsi get_parent_class() digunakan untuk mengetahui class induk dari suatu object atau nama class. Jika object tersebut tidak memiliki class induk, maka fungsi ini akan mengembalikan nilai false.
false
Berikut adalah contoh program yang menampilkan informasi tentang class dan property dari suatu object menggunakan berbagai fungsi introspeksi PHP:
<?php class Produk { public $nama = "Laptop"; private $harga = 10000000; public function tampilkanNama() { return "Nama Produk: " . $this->nama; } } $barang = new Produk(); echo "Apakah ini object? " . (is_object($barang) ? "Ya" : "Tidak") . "<br>"; echo "Class dari object ini: " . get_class($barang) . "<br>"; if (method_exists($barang, "tampilkanNama")) { echo "Method tampilkanNama tersedia.<br>"; } else { echo "Method tampilkanNama tidak ditemukan.<br>"; } $propertyBarang = get_object_vars($barang); echo "Property dalam object:<br>"; print_r($propertyBarang);
Pada contoh ini, kita menggunakan beberapa fungsi bawaan PHP: is_object() untuk memeriksa apakah sebuah variabel adalah object, get_class() untuk mengetahui nama class dari object, method_exists() untuk mengecek apakah suatu method tersedia dalam object, dan get_object_vars() untuk menampilkan daftar properti public yang dimiliki object.
Ayo buktikan pemahamanmu!
Lengkapilah kode program berikut agar dapat menampilkan informasi tentang class dari sebuah object, mengecek apakah object memiliki method tertentu, serta menampilkan semua properti yang dimiliki object tersebut.
<?php class Pengirim { public $nama = "JNE"; private $layanan = "Reguler"; public function kirimPaket() { return "Paket sedang dikirim..."; } } $ekspedisi = new Pengirim(); // Tampilkan nama class dari object echo "Object ini berasal dari class: " . ___($ekspedisi) . "<br>"; // Cek apakah object memiliki method kirimPaket if (___($ekspedisi, "kirimPaket")) { echo $ekspedisi->kirimPaket() . "<br>"; } else { echo "Method tidak tersedia.<br>"; } // Tampilkan daftar property yang telah diatur $infoProperti = ___($ekspedisi); echo "Property object:<br>"; print_r($infoProperti); ?>