⊗ppOpMgROP 89 of 107 menu

Tikai lasāmas īpašības OOP PHP

Apskatīsim klasi, kurā visas īpašības ir privātas:

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

Tagad padarīsim šīs īpašības ārējā pasaulē pieejamas tikai lasīšanai. Iepriekš mēs jau esam to darījuši, veidojot getter metodes katrai īpašībai un neveidojot setter metodes.

Tagad, lai atrisinātu šo uzdevumu, izmantosim māģisko metodi __get. Tajā atgriezīsim pieprasītās īpašības vērtību. Kā to izdarīt: pieprasītās īpašības nosaukums nonāk metodes parametrā __get, mūsu gadījumā $property.

Tas nozīmē, ka mēs varam nolasīt īpašību, kuras nosaukums glabājas mainīgajā, šādi: $this->$property (īpašības nosaukums būs mainīgais, tas ir ar dolāra zīmi sākumā, mēs to esam apguvuši iepriekšējās nodarbībās).

Izveidosim aprakstīto metodi __get:

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

Izmantosim to īpašību lasīšanai:

<?php $test = new Test; echo $test->prop1; // izvadīs 1 echo $test->prop2; // izvadīs 2 ?>

Mēģinājums kaut ko ierakstīt īpašībā novedīs pie kļūdas:

<?php $test = new Test; $test->prop1 = 2; // izvadīs kļūdu ?>

Tas ir tieši tas, kas mums vajadzīgs: īpašību var nolasīt, bet nevar ierakstīt.

Mēģinājums nolasīt neesošu īpašību izvadīs kļūdu:

<?php $test = new Test; echo $test->prop3; // izvadīs kļūdu ?>

Ievērojiet arī šādu niansi: kad mēs veidojām īpašības tikai lasīšanai vecajā veidā, tad, lai nolasītu īpašību, mēs izmantojām getter metodi.

Jaunajā veidā mēs piekļūsim tieši īpašībām, it kā tās būtu publiskas. Bet ierakstīt tās nevarēsim, it kā tās būtu privātas.

Ir dota šāda klase User, kuras īpašības ir pieejamas tikai lasīšanai, izmantojot getter metodes:

<?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; } } ?>

Pārveidojiet šīs klases kodu tā, lai getter metodu vietā izmantotos māģiskā metode __get.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt