⊗ppOpMgSP 91 of 107 menu

Att skriva egenskaper genom magi i OOP i PHP

Den magiska metoden __set anropas när man försöker ändra värdet på en icke-existerande eller dold egenskap. Den tar emot egenskapens namn och värdet som man försöker tilldela den som parametrar.

Låt oss titta på ett praktiskt exempel. Anta att vi har följande klass Test:

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

Låt oss skapa den magiska metoden __set i denna klass, som med hjälp av funktionen var_dump kommer att skriva ut egenskapens namn, som anropades, och värdet som försökte sättas för denna egenskap:

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

Låt oss testa vår klass:

<?php $test = new Test; $test->prop = 'value'; // var_dump från __set-metoden kommer att skriva ut 'prop value' ?>

Låt oss nu sätta värdet på egenskapen vars namn lagras i variabeln $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // sätter värdet } } ?>

Nu kan vi skriva till de privata egenskaperna utifrån klassen:

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

Vi kan skriva till dem, men vi kan inte kontrollera om något skrevs dit eller inte, eftersom egenskaperna är privata.

Man kan skapa en getter för dessa egenskaper eller bara använda den magiska metoden __get. Låt oss använda det andra alternativet:

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

Nu kan vi kontrollera hur vår klass fungerar. Låt oss testa:

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

I verkligheten bör man förstås inte låta vem som helst skriva till privata egenskaper, annars försvinner poängen med dessa privata egenskaper (det är enklare att göra dem publika och så är det med det).

Därför bör denna metod endast användas när det verkligen finns ett behov av det. I kommande lektioner kommer vi att titta på fler exempel på lyckad användning.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa