⊗ppOpMgGP 88 of 107 menu

Å hente egenskaper gjennom magi i OOP i PHP

Neste magiske metode som vi skal gå gjennom, heter __get. Denne metoden utløses når man prøver å lese verdien til en privat eller beskyttet egenskap.

Hvis man implementerer metoden __get i en klasse, vil alle tilganger til ikke-eksisterende eller skjulte egenskaper bli håndtert av denne metoden.

Samtidig vil PHP automatisk sende navnet på den forespurte egenskapen til den første parameteren til denne metoden, og verdien som returneres av denne metoden vil bli oppfattet som verdien til egenskapen som ble forsøkt å få tilgang til.

Det er sannsynligvis ikke veldig klart ennå hvordan dette fungerer, så la oss se på et praktisk eksempel. La oss si at vi har en klasse Test med en privat og en offentlig egenskap:

<?php class Test { public $prop1 = 1; // offentlig egenskap private $prop2 = 2; // privat egenskap } ?>

La oss legge til den magiske metoden __get i klassen vår, som til å begynne med bare skal returnere navnet på egenskapen som det ble forsøkt å få tilgang til:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // returnerer bare navnet på egenskapen } } ?>

La oss teste den magiske metoden vi har laget. La oss prøve å få tilgang til tre typer egenskaper: til den offentlige egenskapen, til den private egenskapen og til en ikke-eksisterende egenskap:

<?php $test = new Test; // Tilgang til offentlig egenskap: echo $test->prop1; // vil skrive ut 1 - det vil si verdien av egenskapen // Tilgang til privat egenskap: echo $test->prop2; // vil skrive ut 'prop2' - navnet på egenskapen // Tilgang til ikke-eksisterende egenskap: echo $test->prop3; // vil skrive ut 'prop3' - navnet på egenskapen ?>

Som du ser, reagerer vår magiske metode på tilgang til private og ikke-eksisterende egenskaper, men ignorerer tilgang til offentlige egenskaper - de fungerer som de alltid har gjort.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis