Setelah menyelesaikan materi ini, mahasiswa diharapkan mampu:
PHP menyediakan beberapa fungsi bawaan untuk menganalisis class, seperti mengecek keberadaan class, melihat method dan property dalam class, serta mengetahui class induk dari suatu class turunan.
Sebelum menggunakan class, kita bisa mengecek apakah class tersebut sudah dideklarasikan menggunakan class_exists(). Fungsi ini mengembalikan true jika class ditemukan, dan false jika tidak. Contoh penggunaan:
Petunjuk:
RUN
<?php if (class_exists("Karyawan")) { echo "Class Karyawan tersedia."; } else { echo "Class Karyawan belum dideklarasikan."; }
Fungsi class_exists() digunakan untuk memeriksa apakah sebuah class telah dideklarasikan atau belum. Ini berguna untuk menghindari error jika suatu class belum tersedia. Pada contoh di atas, jika class Karyawan sudah didefinisikan sebelumnya, maka akan ditampilkan pesan "Class Karyawan tersedia."; jika belum, maka muncul "Class Karyawan belum dideklarasikan.".
class_exists()
Karyawan
Cara lain untuk mengecek apakah suatu class ada dalam daftar class yang sudah dideklarasikan adalah menggunakan get_declared_classes(), yang mengembalikan array berisi semua class yang sudah dibuat dalam skrip.
get_declared_classes()
<?php $semuaClass = get_declared_classes(); if (in_array("Karyawan", $semuaClass)) { echo "Class Karyawan ditemukan."; } else { echo "Class Karyawan tidak ditemukan."; }
Fungsi get_declared_classes() digunakan untuk mengambil semua class yang sudah dideklarasikan dalam script. Dengan in_array(), kita bisa memeriksa apakah sebuah class tertentu (misalnya Karyawan) termasuk dalam daftar tersebut. Jika class tersebut sudah ada, maka ditampilkan pesan bahwa class ditemukan; jika belum, maka ditampilkan bahwa class tidak ditemukan.
in_array()
Untuk melihat method yang tersedia dalam suatu class, gunakan get_class_methods(), yang mengembalikan array berisi daftar method dalam class, termasuk method yang diwarisi dari superclass.
<?php class Pegawai { public function bekerja() {} private function istirahat() {} } $methods = get_class_methods("Pegawai"); print_r($methods);
Fungsi get_class_methods() digunakan untuk mengambil daftar method yang dapat diakses (hanya public) dari suatu class. Pada contoh di atas, class Pegawai memiliki dua method, yaitu bekerja() dan istirahat(). Namun karena istirahat() bersifat private, maka hanya bekerja() yang ditampilkan dalam hasil fungsi.
get_class_methods()
Pegawai
bekerja()
istirahat()
Sedangkan untuk mendapatkan daftar property dalam class, gunakan get_class_vars(), yang mengembalikan array asosiatif berisi daftar property dan nilai defaultnya.
<?php class Mobil { public $warna = "Merah"; private $kecepatan = 100; } $properties = get_class_vars("Mobil"); print_r($properties);
Fungsi get_class_vars() digunakan untuk mengambil semua property yang memiliki visibilitas public dari sebuah class beserta nilai default-nya. Pada contoh di atas, class Mobil memiliki dua properti: warna (public) dan kecepatan (private). Hanya warna yang dimasukkan ke dalam array hasil karena kecepatan tidak bisa diakses dari luar class. Catatan: get_class_vars() hanya mengembalikan property yang memiliki nilai default dan dapat diakses dalam scope saat ini. Property yang belum diinisialisasi atau bersifat private tidak akan muncul.
get_class_vars()
public
Mobil
warna
kecepatan
Jika suatu class merupakan turunan dari class lain, kita bisa mengetahui class induknya menggunakan get_parent_class(). Contohnya:
<?php class Kendaraan {} class Motor extends Kendaraan {} echo get_parent_class("Motor");
Fungsi get_parent_class() digunakan untuk mengetahui nama class induk dari suatu class turunan. Dalam contoh di atas, class Motor merupakan turunan dari Kendaraan, sehingga fungsi akan mengembalikan string "Kendaraan". Fungsi ini sangat berguna dalam refleksi class atau debugging hubungan pewarisan dalam OOP.
get_parent_class()
Motor
Kendaraan
"Kendaraan"
PHP memiliki class ReflectionClass untuk melakukan analisis mendalam terhadap class, termasuk mengecek apakah class bersifat anonymous, menampilkan method static, dan melihat property dalam class.
ReflectionClass
function tampilkanClass() { $classes = get_declared_classes(); foreach ($classes as $class) { echo "Informasi tentang class: {$class}"; $refleksi = new ReflectionClass($class); // Mengecek apakah class ini adalah anonymous class $isAnonymous = $refleksi->isAnonymous() ? "Ya" : "Tidak"; echo "Apakah Anonymous Class: {$isAnonymous}"; // Menampilkan method static dalam class echo "Method static:"; $methods = $refleksi->getMethods(ReflectionMethod::IS_STATIC); if (!count($methods)) { echo "Tidak ada"; } else { foreach ($methods as $method) { echo "{$method->name}()"; } } // Menampilkan property dalam class echo "Property dalam class:"; $properties = $refleksi->getProperties(); if (!count($properties)) { echo "Tidak ada"; } else { foreach ($properties as $property) { echo "\${$property->name}"; } } echo ""; } } tampilkanClass();
ReflectionClass digunakan untuk mendapatkan informasi tentang suatu class. isAnonymous() digunakan untuk mengecek apakah class adalah anonymous class. getMethods(ReflectionMethod::IS_STATIC) mengambil semua method static dalam class. getProperties() mendapatkan semua property dalam class.
isAnonymous()
getMethods(ReflectionMethod::IS_STATIC)
getProperties()
<?php class Produk { public $nama = "Laptop"; private $harga = 15000000; public function tampilkanProduk() { return "Nama Produk: " . $this->nama; } } // Mengecek apakah class Produk ada if (class_exists("Produk")) { echo "Class Produk tersedia.<br>"; } // Mendapatkan method dan property class Produk $methods = get_class_methods("Produk"); $properties = get_class_vars("Produk"); echo "Method yang tersedia: "; print_r($methods); echo "<br>Property yang tersedia: "; print_r($properties);
Kode ini menggunakan fungsi class_exists(), get_class_methods(), dan get_class_vars() untuk memeriksa ketersediaan class Produk, serta mengambil daftar method dan property yang tersedia. Method privat seperti $harga tidak akan ditampilkan oleh get_class_vars() karena fungsinya hanya mengembalikan properti publik.
Produk
$harga
Ayo buktikan pemahamanmu!
Lengkapilah kode program berikut agar dapat memeriksa apakah class Perangkat telah dibuat, dan tampilkan semua method dan property yang tersedia di dalamnya menggunakan fungsi bawaan PHP.
<?php class Perangkat { public $tipe = "Router"; private $versi = "v2.0"; public function koneksi() { return "Menyambung ke jaringan..."; } } // Cek apakah class Perangkat telah dibuat if (("Perangkat")) { echo "Class Perangkat ditemukan.<br>"; } // Tampilkan method yang dimiliki class $daftarMethod = ("Perangkat"); echo "Method dalam class: "; print_r($daftarMethod); echo "<br>"; // Tampilkan property dalam class $daftarProperti = ("Perangkat"); echo "Property dalam class: "; print_r($daftarProperti); ?>