PHP da OOP da xususiyatlarni sehr orqali olish
Biz ko'rib chiradigan keyingi sehrli metod
__get deb ataladi. Ushbu
metod maxsus yoki himoyalangan xususiyatning
qiymatini o'qishga urinishda ishga tushadi.
Agar __get metodini biron bir
classda amalga oshirsak, unda mavjud bo'lmagan
yoki yashirin xususiyatlarga barcha murojaatlar
ushbu metod tomonidan qayta ishlanadi.
Bunda PHP avtomatik ravishda so'ralgan xususiyatning nomini ushbu metodning birinchi parametriga o'tkazadi, va bu metod tomonidan qaytarilgan qiymat xususiyatning qiymati sifatida qabul qilinadi, unga murojaat qilingan.
Ehtimol hozircha bu qanday ishlashi aniq
emas, shuning uchun keling amaliy misolni
ko'rib chiqaylik. Faraz qilaylik, bizda Test
classi bor, uning ichida maxsus va ochiq xususiyatlar mavjud:
<?php
class Test
{
public $prop1 = 1; // ochiq xususiyat
private $prop2 = 2; // maxsus xususiyat
}
?>
Keling, classimizga __get sehrli metodini
qo'shamiz, u boshlang'ich uchun shunchaki
murojaat qilingan xususiyat nomini qaytaradi:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // shunchaki xususiyat nomini qaytaramiz
}
}
?>
Keling, yaratilgan sehrli metodning ishlashini tekshiramiz. Uch turdagi xususiyatlarga murojaat qilaylik: ochiq xususiyatga, maxsus xususiyatga va mavjud bo'lmagan xususiyatga:
<?php
$test = new Test;
// Ochiq xususiyatga murojaat qilamiz:
echo $test->prop1; // 1 ni chiqaradi - ya'ni xususiyatning qiymati
// Maxsus xususiyatga murojaat qilamiz:
echo $test->prop2; // 'prop2' ni chiqaradi - xususiyat nomi
// Mavjud bo'lmagan xususiyatga murojaat qilamiz:
echo $test->prop3; // 'prop3' ni chiqaradi - xususiyat nomi
?>
Ko'rib turganingizdek, bizning sehrli metodimiz maxsus va mavjud bo'lmagan xususiyatlarga murojaat qilishga reagirlaydi, lekin ochiq xususiyatlarga murojaat qilishni e'tiborsiz qoldiradi - ular avvalgidek ishlayveradi.