⊗ppOpMgSP 91 of 107 menu

Schreiben von Eigenschaften durch Magie in OOP in PHP

Die magische Methode __set wird aufgerufen, beim Versuch, den Wert einer nicht vorhandenen oder versteckten Eigenschaft zu ändern. Als Parameter akzeptiert sie den Namen der Eigenschaft und den Wert, der ihr zugewiesen werden soll.

Schauen wir uns ein praktisches Beispiel an. Nehmen wir an, wir haben die folgende Klasse Test:

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

Erstellen wir in dieser Klasse eine magische Methode __set, die mit der Funktion var_dump den Namen der Eigenschaft, auf die zugegriffen wurde, und den Wert, der dieser Eigenschaft zugewiesen werden soll, ausgibt:

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

Testen wir die Funktionsweise unserer Klasse:

<?php $test = new Test; $test->prop = 'value'; // var_dump der Methode __set gibt 'prop value' aus ?>

Lassen Sie uns nun den Wert einer Eigenschaft setzen, deren Name in der Variable $property gespeichert ist:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // setzen den Wert } } ?>

Jetzt können wir von außerhalb der Klasse in private Eigenschaften schreiben:

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

Schreiben können wir, jedoch können wir nicht überprüfen, ob etwas dort geschrieben wurde, da die Eigenschaften privat sind.

Man kann einen Getter für diese Eigenschaften erstellen oder einfach die magische Methode __get verwenden. Verwenden wir die zweite Option:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Magischer Getter für Eigenschaften: public function __get($property) { return $this->$property; } } ?>

Jetzt können wir die Funktionsweise unserer Klasse überprüfen. Testen wir:

<?php $test = new Test; $test->prop1 = 1; // schreibt 1 $test->prop2 = 2; // schreibt 2 echo $test->prop1; // gibt 1 aus echo $test->prop2; // gibt 2 aus ?>

Eigentlich sollte man natürlich nicht zulassen, dass jeder in private Eigenschaften schreiben kann, sonst geht der Sinn dieser privaten Eigenschaften verloren (einfacher ist es, sie öffentlich zu machen und das war's).

Daher sollte diese Methode nur angewendet werden, wenn es wirklich notwendig ist. In den folgenden Lektionen werden wir weitere Beispiele für eine gelungene Anwendung betrachten.

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