⊗ppOpMgSP 91 of 107 menu

Egenskabsskrivning gennem magi i OOP i PHP

Den magiske metode __set kaldes når der forsøges at ændre værdien af en ikke-eksisterende eller skjult egenskab. Den tager egenskabens navn og værdien, som der forsøges at tildele den, som parametre.

Lad os se på et praktisk eksempel. Antag, at vi har følgende klasse Test:

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

Lad os lave den magiske metode __set i denne klasse, som ved hjælp af funktionen var_dump vil udskrive navnet på den egenskab, der blev tilgået, og den værdi, som der forsøges at indstille for den:

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

Lad os teste vores klasse:

<?php $test = new Test; $test->prop = 'value'; // var_dump fra __set metoden vil udskrive 'prop value' ?>

Lad os nu indstille værdien for den egenskab, hvis navn er gemt i variablen $property:

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

Nu kan vi tildele værdier til de private egenskaber udefra klassen:

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

Vi kan tildele værdier, men vi kan ikke kontrollere, om der er blevet skrevet noget dertil, da egenskaberne er private.

Man kan lave en getter for disse egenskaber eller bruge den magiske metode __get. Lad os bruge den anden mulighed:

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

Nu kan vi teste vores klasse. Lad os teste:

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

Selvfølgelig bør man ikke tillade alle og enhver at skrive til private egenskaber, ellers forsvinder meningen med disse private egenskaber (det er nemmere at gøre dem offentlige).

Derfor bør denne metode kun anvendes, når der virkelig er behov for det. I de følgende lektioner vil vi se på flere eksempler på vellykket anvendelse.

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