⊗ppOpMgGP 88 of 107 menu

Att hämta egenskaper genom magi i OOP i PHP

Nästa magiska metod som vi ska analysera kallas __get. Denna metod aktiveras när man försöker läsa värdet på en privat eller skyddad egenskap.

Om man implementerar metoden __get i någon klass, så kommer alla försök att komma åt icke-existerande eller dolda egenskaper att hanteras av denna metod.

Samtidigt kommer PHP automatiskt att skicka namnet på den efterfrågade egenskapen som den första parametern i denna metod, och det värde som returneras av denna metod kommer att uppfattas som värdet på egenskapen som man försökte komma åt.

Det är förmodligen inte så tydligt hur det här fungerar än, så låt oss titta på ett praktiskt exempel. Låt oss säga att vi har en klass Test med en privat och en publik egenskap:

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

Låt oss lägga till den magiska metoden __get i vår klass, som till att börja med helt enkelt kommer att returnera namnet på egenskapen som man försökte komma åt:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // returnera bara egenskapens namn } } ?>

Låt oss testa hur den skapade magiska metoden fungerar. Låt oss försöka komma åt tre typer av egenskaper: till en publik egenskap, till en privat egenskap och till en icke-existerande egenskap:

<?php $test = new Test; // Kommer åt den publika egenskapen: echo $test->prop1; // skriver ut 1 - det vill säga egenskapens värde // Kommer åt den privata egenskapen: echo $test->prop2; // skriver ut 'prop2' - egenskapens namn // Kommer åt en icke-existerande egenskap: echo $test->prop3; // skriver ut 'prop3' - egenskapens namn ?>

Som ni ser reagerar vår magiska metod på försök att komma åt privata och icke-existerande egenskaper, men ignorerar försök att komma åt publika - de fungerar som de alltid har gjort.

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