PHP-də OOP-də xassələrin sehr ilə əldə edilməsi
Növbəti sehrli metod, bizim nəzərdən keçirəcəyimiz,
__get adlanır. Bu
metod gizli və ya qorunan xassənin
qiymətini oxumaq cəhdi zamanı işə düşür.
Əgər __get metodu hər hansı bir
sinifdə tətbiq edilərsə, onda mövcud olmayan
və ya gizli xassələrə bütün müraciətlər
bu metod tərəfindən emal ediləcək.
Bu zaman PHP avtomatik olaraq istənilən xassənin adını bu metodun birinci parametrinə ötürəcək, bu metodun qaytardığı qiymət isə müraciət edilən xassənin qiyməti kimi qəbul ediləcək.
Yəqin ki, hələlik bu işin necə getdiyi
çox aydın deyil, buna görə də praktiki
misala nəzər salaq. Tutaq ki, bizim gizli və ictimai
xassələri olan Test sinfi var:
<?php
class Test
{
public $prop1 = 1; // ictimai xassə
private $prop2 = 2; // gizli xassə
}
?>
Gəlin sinfimizə, əvvəlcə sadəcə olaraq
müraciət edilən xassənin adını qaytaran
sehrli __get metodunu əlavə edək:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // sadəcə xassənin adını qaytaraq
}
}
?>
Gəlin yaradılmış sehrli metodun işini yoxlayaq. Üç növ xassəyə müraciət edək: ictimai xassəyə, gizli xassəyə və mövcud olmayan xassəyə:
<?php
$test = new Test;
// Ictimai xassəyə müraciət edirik:
echo $test->prop1; // 1 çap edəcək - yəni xassənin qiyməti
// Gizli xassəyə müraciət edirik:
echo $test->prop2; // 'prop2' çap edəcək - xassənin adı
// Mövcud olmayan xassəyə müraciət edirik:
echo $test->prop3; // 'prop3' çap edəcək - xassənin adı
?>
Gördüyünüz kimi, bizim sehrli metod gizli və mövcud olmayan xassələrə müraciətə reaksiya verir, lakin ictimai xassələrə müraciəti laqeyd qoyur - onlar əvvəlki kimi işləyir.