⊗ppOpMgGP 88 of 107 menu

Zugriff auf Eigenschaften durch Magie in OOP in PHP

Die nächste magische Methode, die wir uns ansehen werden, heißt __get. Diese Methode wird ausgelöst, wenn versucht wird, den Wert einer privaten oder geschützten Eigenschaft auszulesen.

Wenn die Methode __get in einer Klasse implementiert wird, dann werden alle Zugriffe auf nicht vorhandene oder versteckte Eigenschaften von dieser Methode verarbeitet.

Dabei übergibt PHP automatisch den Namen der angeforderten Eigenschaft als ersten Parameter dieser Methode, und der von dieser Methode zurückgegebene Wert wird als Wert der Eigenschaft interpretiert, auf die zugegriffen wurde.

Es ist wahrscheinlich noch nicht sehr verständlich, wie das funktioniert, schauen wir uns deshalb ein praktisches Beispiel an. Nehmen wir an, wir haben eine Klasse Test mit einer privaten und einer öffentlichen Eigenschaft:

<?php class Test { public $prop1 = 1; // öffentliche Eigenschaft private $prop2 = 2; // private Eigenschaft } ?>

Fügen wir unserer Klasse die magische Methode __get hinzu, die zunächst einfach den Namen der Eigenschaft zurückgibt, auf die zugegriffen wurde:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // einfach den Eigenschaftsnamen zurückgeben } } ?>

Prüfen wir die Funktionsweise der erstellten magischen Methode. Greifen wir auf drei Arten von Eigenschaften zu: auf die öffentliche Eigenschaft, auf die private und auf eine nicht vorhandene:

<?php $test = new Test; // Zugriff auf öffentliche Eigenschaft: echo $test->prop1; // gibt 1 aus - also den Wert der Eigenschaft // Zugriff auf private Eigenschaft: echo $test->prop2; // gibt 'prop2' aus - den Eigenschaftsnamen // Zugriff auf nicht vorhandene Eigenschaft: echo $test->prop3; // gibt 'prop3' aus - den Eigenschaftsnamen ?>

Wie Sie sehen, reagiert unsere magische Methode auf den Zugriff auf private und nicht vorhandene Eigenschaften, ignoriert aber den Zugriff auf öffentliche - diese funktionieren so, wie sie es vorher taten.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικά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
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen