Mendapatkan Properti melalui Magic dalam OOP di PHP
Metode magic berikutnya yang akan kita
bahas adalah __get. Metode ini
terpicu ketika mencoba membaca nilai dari
properti privat atau terlindungi.
Jika metode __get diimplementasikan dalam suatu
kelas, maka semua akses ke properti yang tidak ada
atau tersembunyi akan ditangani oleh
metode ini.
Dalam hal ini, PHP secara otomatis akan meneruskan nama properti yang diminta ke parameter pertama dari metode ini, dan nilai yang dikembalikan oleh metode ini akan dianggap sebagai nilai properti yang diakses.
Kemungkinan besar masih belum terlalu jelas, bagaimana ini
bekerja, jadi mari kita lihat contoh
praktis. Misalkan kita memiliki kelas
Test dengan properti
privat dan publik:
<?php
class Test
{
public $prop1 = 1; // properti publik
private $prop2 = 2; // properti privat
}
?>
Mari tambahkan metode magic
__get ke kelas kita,
yang untuk awalnya akan hanya
mengembalikan nama properti yang diakses:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // cukup kembalikan nama properti
}
}
?>
Mari kita uji kerja metode magic yang telah dibuat. Kita akan mengakses tiga jenis properti: ke properti publik, ke privat, dan ke yang tidak ada:
<?php
$test = new Test;
// Mengakses properti publik:
echo $test->prop1; // menampilkan 1 - yaitu nilai properti
// Mengakses properti privat:
echo $test->prop2; // menampilkan 'prop2' - nama properti
// Mengakses properti yang tidak ada:
echo $test->prop3; // menampilkan 'prop3' - nama properti
?>
Seperti yang Anda lihat, metode magic kita bereaksi terhadap akses ke properti privat dan yang tidak ada, tetapi mengabaikan akses ke properti publik - mereka bekerja seperti sebelumnya.