⊗ppOpMgSP 91 of 107 menu

Het schrijven van eigenschappen via magie in OOP in PHP

De magische methode __set wordt aangeroepen bij een poging om de waarde van een niet-bestaande of verborgen eigenschap te wijzigen. Als parameters accepteert het de naam van de eigenschap en de waarde die eraan wordt toegekend.

Laten we een praktisch voorbeeld bekijken. Stel dat we de volgende klasse Test hebben:

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

Laten we in deze klasse een magische methode __set maken, die met behulp van de functie var_dump de naam van de eigenschap waarop werd geprobeerd toegang te krijgen, en de waarde die aan deze eigenschap werd probeert in te stellen, weergeeft:

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

Laten we de werking van onze klasse testen:

<?php $test = new Test; $test->prop = 'value'; // var_dump van de __set methode geeft 'prop value' weer ?>

Laten we nu de waarde instellen voor de eigenschap waarvan de naam is opgeslagen in de variabele $property:

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

Nu kunnen we waarden toekennen aan private eigenschappen van buiten de klasse:

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

We kunnen wel toekennen, maar we kunnen niet controleren of er iets is toegekend, omdat de eigenschappen private zijn.

We kunnen een getter maken voor deze eigenschappen of gewoon gebruikmaken van de magische methode __get. Laten we de tweede optie gebruiken:

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

Nu kunnen we de werking van onze klasse controleren. Laten we testen:

<?php $test = new Test; $test->prop1 = 1; // ken 1 toe $test->prop2 = 2; // ken 2 toe echo $test->prop1; // geeft 1 weer echo $test->prop2; // geeft 2 weer ?>

Natuurlijk is het niet verstandig om zomaar iedereen toe te staan waarden toe te kennen aan private eigenschappen, anders gaat de zin van deze private eigenschappen verloren (het is dan eenvoudiger om ze publiek te maken).

Daarom moet deze methode alleen worden toegepast wanneer daar werkelijk behoefte aan is. In de volgende lessen zullen we nog voorbeelden van geslaagde toepassing bekijken.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren