Օբյեկտային կողմնորոշված PHP-ում հատկությունների ստացում կախարդության միջոցով
Հաջորդ կախարդական մեթոդը, որը մենք
կքննարկենք, կոչվում է __get: Այս
մեթոդը աշխատում է, երբ փորձում ենք կարդալ
փակ կամ պաշտպանված հատկության արժեքը:
Եթե __get մեթոդը իրականացնենք որևէ
դասում, ապա բոլոր դիմումները գոյություն չունեցող
կամ թաքնված հատկություններին կմշակվեն
այս մեթոդով:
Այդ դեպքում PHP-ն ավտոմատ կփոխանցի հարցված հատկության անունը այս մեթոդի առաջին պարամետրին, իսկ այս մեթոդով վերադարձված արժեքը կընկալվի որպես այն հատկության արժեք, որին դիմել էին:
Հավանաբար դեռ շատ հասկանալի չէ, թե ինչպես է սա
աշխատում, ուստի եկեք նայենք գործնական
օրինակին: Ենթադրենք, մենք ունենք Test դաս
փակ և հանրային
հատկություններով:
<?php
class Test
{
public $prop1 = 1; // հանրային հատկություն
private $prop2 = 2; // փակ հատկություն
}
?>
Եկեք մեր դասին ավելացնենք կախարդական մեթոդ
__get, որը սկզբի համար պարզապես կլինի
վերադարձնում է այն հատկության անունը, որին դիմել էին:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // պարզապես վերադարձնում ենք հատկության անունը
}
}
?>
Եկեք ստուգենք ստեղծված կախարդական մեթոդի աշխատանքը: Դիմենք երեք տեսակի հատկությունների՝ հանրային հատկությանը, փակ հատկությանը և գոյություն չունեցող հատկությանը:
<?php
$test = new Test;
// Դիմում ենք հանրային հատկությանը:
echo $test->prop1; // կցուցադրի 1 - այսինքն հատկության արժեքը
// Դիմում ենք փակ հատկությանը:
echo $test->prop2; // կցուցադրի 'prop2' - հատկության անունը
// Դիմում ենք գոյություն չունեցող հատկությանը:
echo $test->prop3; // կցուցադրի 'prop3' - հատկության անունը
?>
Ինչպես տեսնում եք, մեր կախարդական մեթոդը արձագանքում է փակ և գոյություն չունեցող հատկություններին դիմելիս, բայց անտեսում է դիմումը հանրային հատկություններին - դրանք աշխատում են այնպես, ինչպես աշխատում էին նախկինում: