Mendapatkan Sifat melalui Sihir dalam OOP dalam PHP
Kaedah ajaib seterusnya yang akan kita
bincangkan dipanggil __get. Kaedah
ini dicetuskan apabila cuba membaca nilai
sifat persendirian atau sifat yang dilindungi.
Jika melaksanakan kaedah __get dalam mana-mana
kelas, semua akses kepada sifat yang tidak wujud
atau tersembunyi akan diuruskan
oleh kaedah ini.
Pada masa yang sama, PHP secara automatik akan menghantar nama sifat yang diminta ke parameter pertama kaedah ini, dan nilai yang dipulangkan oleh kaedah ini akan diterima sebagai nilai sifat yang diakses.
Kemungkinan besar masih tidak begitu jelas bagaimana ini
berfungsi, jadi mari kita lihat contoh
praktikal. Katakan kita mempunyai kelas
Test dengan sifat persendirian dan awam:
<?php
class Test
{
public $prop1 = 1; // sifat awam
private $prop2 = 2; // sifat persendirian
}
?>
Mari tambahkan kaedah ajaib
__get ke dalam kelas kita,
yang pada mulanya hanya akan
memulangkan nama sifat yang diakses:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // hanya pulangkan nama sifat
}
}
?>
Mari kita uji fungsi kaedah ajaib yang dibuat. Mari akses tiga jenis sifat: kepada sifat awam, kepada sifat persendirian dan kepada sifat yang tidak wujud:
<?php
$test = new Test;
// Mengakses sifat awam:
echo $test->prop1; // akan memaparkan 1 - iaitu nilai sifat
// Mengakses sifat persendirian:
echo $test->prop2; // akan memaparkan 'prop2' - nama sifat
// Mengakses sifat yang tidak wujud:
echo $test->prop3; // akan memaparkan 'prop3' - nama sifat
?>
Seperti yang anda lihat, kaedah ajaib kita bertindak balas kepada akses kepada sifat persendirian dan yang tidak wujud, tetapi mengabaikan akses kepada sifat awam - ia berfungsi seperti sebelumnya.