⊗ppOpMgSP 91 of 107 menu

Īpašību ierakstīšana ar magiju OPHP PHP

Maģiskā metode __set tiek izsaukta mēģinot mainīt neesošas vai slēptas īpašības vērtību. Kā parametrus tā pieņem īpašības nosaukumu un vērtību, kuru tai mēģina piešķirt.

Apskatīsim praktisku piemēru. Pieņemsim, ka mums ir dota šāda klase Test:

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

Izveidosim šajā klasē maģisko metodi __set, kas ar funkcijas var_dump palīdzību izvadīs īpašības nosaukumu, pie kura notika piekļuve, un vērtību, ko šai īpašībai mēģina iestatīt:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { var_dump($property . ' ' .$value); } } ?>

Pārbaudīsim mūsu klases darbību:

<?php $test = new Test; $test->prop = 'value'; // var_dump metodes __set izvadīs 'prop value' ?>

Tagad mēģināsim iestatīt vērtību īpašībai, kuras nosaukums glabājas mainīgajā $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // iestatām vērtību } } ?>

Tagad mēs varēsim ierakstīt privātajās īpašībās ārpus klases:

<?php $test = new Test; $test->prop1 = 1; // ierakstīsim 1 $test->prop2 = 2; // ierakstīsim 2 ?>

Ierakstīt mēs varam, tomēr pārbaudīt, vai tur kaut kas ierakstījās - nē, jo īpašības ir privātas.

Var izveidot getteri šīm īpašībām vai vienkārši izmantot maģisko metodi __get. Izmantosim otro variantu:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Maģiskais getteris īpašībām: public function __get($property) { return $this->$property; } } ?>

Tagad mēs varam pārbaudīt mūsu klases darbību. Pārbaudīsim:

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

Patiesībā, protams, nevajadzētu atļaut visiem ierakstīt privātajās īpašībās, pretējā case pazūd šo privāto īpašību jēga (vienkāršāk ir padarīt tās publiskas un viss).

Tāpēc šo metodi vajadzētu lietot tikai tad, kad tam patiešām ir nepieciešamība. Nākamajās nodarbībās mēs vēl apskatīsim piemērus veiksmīgam pielietojumam.

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