⊗ppOpMgGP 88 of 107 menu

Hentning af egenskaber gennem magi i OOP i PHP

Næste magiske metode, som vi skal se på, hedder __get. Denne metode aktiveres ved forsøg på at læse værdien af en privat eller beskyttet egenskab.

Hvis metoden __get implementeres i en klasse, vil alle henvisninger til ikke-eksisterende eller skjulte egenskaber blive håndteret af denne metode.

PHP vil automatisk sende navnet på den anmodede egenskab til den første parameter af denne metode, og den værdi, der returneres af denne metode, vil blive opfattet som værdien af den egenskab, der blev henvist til.

Det er sandsynligvis ikke særlig klart endnu, hvordan det fungerer, så lad os se på et praktisk eksempel. Antag, at vi har en klasse Test med en privat og en offentlig egenskab:

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

Lad os tilføje den magiske metode __get til vores klasse, som til at starte med blot vil returnere navnet på den egenskab, der blev henvist til:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // returner blot egenskabens navn } } ?>

Lad os teste den magiske metodes funktionalitet. Vi henviser til tre typer egenskaber: til den offentlige egenskab, til den private og til en ikke-eksisterende:

<?php $test = new Test; // Henviser til den offentlige egenskab: echo $test->prop1; // viser 1 - altså egenskabens værdi // Henviser til den private egenskab: echo $test->prop2; // viser 'prop2' - egenskabens navn // Henviser til en ikke-eksisterende egenskab: echo $test->prop3; // viser 'prop3' - egenskabens navn ?>

Som du kan se, reagerer vores magiske metode på henvisning til private og ikke-eksisterende egenskaber, men ignorerer henvisning til offentlige - de fungerer som de gjorde før.

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