⊗ppOpMgROP 89 of 107 menu

Կարդալու համար նախատեսված հատկությունները OOP-ում PHP-ում

Դիտարկենք դաս, որում բոլոր հատկությունները պրիվատ են:

<?php class Test { private $prop1 = 1; private $prop2 = 2; } ?>

Այժմ եկեք անենք, որ այս հատկությունները արտաքին աշխարհում հասանելի լինեն միայն կարդալու համար: Նախկինում մենք արդեն անում էինք նման բան, ստեղծելով գետտերներ յուրաքանչյուր հատկության համար և չստեղծելով սետտերներ:

Եկեք այժմ այս խնդիրը լուծելու համար օգտագործենք կախարդական մեթոդը __get: Մենք կվերադարձնենք դրանում հարցված հատկության արժեքը: Ինչպես անել դա՝ հարցված հատկության անունը հայտնվում է մեթոդի պարամետրում __get, մեր դեպքում $property:

Սա նշանակում է, որ մենք կարող ենք կարդալ հատկությունը, որի անունը պահվում է փոփոխականում, ահա այսպես: $this->$property (հատկության անունը կլինի փոփոխական, այսինքն՝ սկզբում դոլար նշանով, մենք սա անցել ենք նախորդ դասերում):

Եկեք ստեղծենք նկարագրված __get մեթոդը.

<?php class Test { private $prop1 = 1; private $prop2 = 2; public function __get($property) { return $this->$property; } } ?>

Օգտագործենք այն հատկությունները կարդալու համար.

<?php $test = new Test; echo $test->prop1; // կարտածի 1 echo $test->prop2; // կարտածի 2 ?>

Ինչ-որ բան գրելու փորձը հատկության մեջ կհանգեցնի սխալի.

<?php $test = new Test; $test->prop1 = 2; // կտա սխալ ?>

Սա հենց այն է, ինչ մեզ պետք է. հատկությունը կարելի է կարդալ, բայց չի կարելի գրել:

Գոյություն չունեցող հատկություն կարդալու փորձը կտա սխալ.

<?php $test = new Test; echo $test->prop3; // կտա սխալ ?>

Ուշադրություն դարձրեք նաև հետևյալ նրբերանգին. երբ մենք հատկությունները դարձնում էինք միայն կարդալու համար հին եղանակով, ապա հատկությունը կարդալու համար մենք օգտագործում էինք մեթոդ-գետտեր:

Նոր եղանակով մենք կդիմենք հենց հատկություններին, կարծես դրանց հասարակական են: Բայց դրանց մեջ գրել չենք կարող, կարծես դրանց պրիվատ են:

Թող տրված լինի ահա այսպիսի User դասը, որի հատկությունները մատչելի են միայն կարդալու համար օգտագործելով գետտերներ.

<?php class User { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Վերափոխեք այս դասի կոդն այնպես, որ գետտերների փոխարեն օգտագործվի կախարդական մեթոդ __get:

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել