⊗ppOpMgGP 88 of 107 menu

Pridobivanje lastnosti preko magije v OOP v PHP

Naslednja magična metoda, ki jo bomo obravnavali, se imenuje __get. Ta metoda se sproži ob poskusu branja vrednosti zasebne ali zaščitene lastnosti.

Če implementiramo metodo __get v katerem koli razredu, bodo vsi dostopi do neobstoječih ali skritih lastnosti obravnavani s to metodo.

Pri tem bo PHP samodejno posredoval ime zahtevane lastnosti v prvi parameter te metode, vrnjena vrednost te metode pa bo sprejeta kot vrednost lastnosti, ki je bila zahtevana.

Verjetno za zdaj še ni zelo jasno, kako to deluje, zato poglejmo praktičen primer. Naj imamo tak razred Test z zasebno in javno lastnostjo:

<?php class Test { public $prop1 = 1; // javna lastnost private $prop2 = 2; // zasebna lastnost } ?>

Dodajmo našemu razredu magično metodo __get, ki bo za začetek preprosto vračala ime lastnosti, ki je bila zahtevana:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // preprosto vrnimo ime lastnosti } } ?>

Preverimo delovanje ustvarjene magične metode. Obrnimo se na tri tipe lastnosti: na javno lastnost, na zasebno in na neobstoječo:

<?php $test = new Test; // Obračamo se na javno lastnost: echo $test->prop1; // izpiše 1 - to je vrednost lastnosti // Obračamo se na zasebno lastnost: echo $test->prop2; // izpiše 'prop2' - ime lastnosti // Obračamo se na neobstoječo lastnost: echo $test->prop3; // izpiše 'prop3' - ime lastnosti ?>

Kot vidite, naša magična metoda se odziva na dostop do zasebnih in neobstoječih lastnosti, vendar ignorira dostop do javnih - te delujejo tako, kot so delovale prej.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni