Selamat datang di part 70 dari seri tutorial pemrograman PHP kita! Di part ini, kita akan menjelajahi PHP Reflection API, sebuah fitur yang memungkinkan kita untuk 'membongkar' dan menganalisis struktur kelas, interface, fungsi, dan metode secara dinamis saat runtime. Ini sangat berguna untuk debugging, dokumentasi otomatis, dan membangun framework yang fleksibel.
Prasyarat:
Bayangkan Reflection API seperti sinar-X untuk kode PHP Anda. Dengan sinar-X, dokter dapat melihat tulang dan organ internal tanpa melakukan operasi. Sama halnya, Reflection API memungkinkan kita untuk memeriksa properti, metode, parameter, anotasi, dan informasi lain tentang kelas dan fungsi tanpa harus membaca kode sumber secara manual.
Kegunaan Utama:
Mari kita lihat beberapa contoh kode untuk memahami cara kerja Reflection API.
<?php
class Produk {
public $nama;
private $harga;
protected $deskripsi;
public function __construct(string $nama, float $harga, string $deskripsi) {
$this->nama = $nama;
$this->harga = $harga;
$this->deskripsi = $deskripsi;
}
public function getHarga(): float {
return $this->harga;
}
protected function getDeskripsi(): string {
return $this->deskripsi;
}
}
$reflection = new ReflectionClass('Produk');
echo "Nama Kelas: " . $reflection->getName() . "<br>";
echo "Properti Publik: <br>";
foreach ($reflection->getProperties(ReflectionProperty::IS_PUBLIC) as $property) {
echo "- " . $property->getName() . "<br>";
}
echo "Metode Publik: <br>";
foreach ($reflection->getMethods(ReflectionMethod::IS_PUBLIC) as $method) {
echo "- " . $method->getName() . "<br>";
}
?>
Penjelasan Kode:
<?php
function prosesPesanan(string $produk, int $jumlah, string $alamat):
void {
// Proses pesanan...
}
$reflectionFunction = new ReflectionFunction('prosesPesanan');
echo "Nama Fungsi: " . $reflectionFunction->getName() . "<br>";
echo "Parameter Fungsi: <br>";
foreach ($reflectionFunction->getParameters() as $parameter) {
echo "- " . $parameter->getName() . " (Tipe: " . $parameter->getType() . ")<br>";
}
?>
Penjelasan Kode:
Buatlah sebuah fungsi yang menggunakan Reflection API untuk mencetak semua informasi tentang sebuah kelas, termasuk properti, metode, konstanta, dan interface yang diimplementasikan.