⊗ppOpMgSP 91 of 107 menu

Egendefinering av egenskaper gjennom magi i OOP i PHP

Den magiske metoden __set blir kalt ved forsøk på å endre verdien til en ikke-eksisterende eller skjult egenskap. Den tar imot egenskapsnavn og verdi som parametere, som den prøver å tilordne.

La oss se på et praktisk eksempel. Anta at vi har en klasse Test som dette:

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

La oss lage en magisk metode __set i denne klassen, som ved hjelp av funksjonen var_dump skal skrive ut navnet på egenskapen det ble forsøkt å få tilgang til, og verdien som det ble forsøkt å sette for denne egenskapen:

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

La oss teste klassen vår:

<?php $test = new Test; $test->prop = 'verdi'; // var_dump fra __set-metoden vil skrive ut 'prop verdi' ?>

La oss nå sette verdien for egenskapen med navn lagret i variabelen $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // setter verdien } } ?>

Nå kan vi skrive til de private egenskapene utenfor klassen:

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

Vi kan skrive, men vi kan ikke sjekke om noe ble skrevet dit, siden egenskapene er private.

Man kan lage en getter for disse egenskapene eller bruke den magiske metoden __get. La oss bruke det andre alternativet:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Magisk getter for egenskaper: public function __get($property) { return $this->$property; } } ?>

Nå kan vi teste klassen vår. La oss teste:

<?php $test = new Test; $test->prop1 = 1; // skriver 1 $test->prop2 = 2; // skriver 2 echo $test->prop1; // skriver ut 1 echo $test->prop2; // skriver ut 2 ?>

Selvfølgelig bør man ikke tillate hvem som helst å skrive til private egenskaper, ellers forsvinner meningen med disse private egenskapene (det er enklere å gjøre dem offentlige og være ferdig med det).

Derfor bør denne metoden bare brukes når det virkelig er nødvendig. I de neste leksjonene skal vi se på eksempler på vellykket bruk.

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