mijane Blog

ein paar interessante Sachen gibt es immer

Magische Methoden

Geschrieben von Peter Rother • Montag, 23. Februar 2009 • Kategorie: PHP

Mit PHP 5 wurden auch die magischen Methoden (Interzeptormethoden) eingeführt. Diese Methoden werden dann aufgerufen, wenn eine Aktion auf ein Objekt ausgeführt werden soll und diese Aktion von einer magischen Methode begleitet wird. Es wird dann probiert die entsprechende magische Methode auszuführen, diese muss aber in der Klasse oder der eventuell abgeleiteten Klasse zur Verfügung stehen. Hier findet ihr nun eine Übersicht welche magischen Methoden zur Verfügung stehen und in welchen Fall diese aufgerufen werden. Da diese Methoden schon länger zur Verfügung stehen, werde ich hiermit eine kleine Einleitung schaffen und euch in weiteren Beiträgen zeigen, wie diese Methoden sinnvoll genutzt werden können.

__construct(): wird immer aufgerufen wenn eine neues Objekt einer Klasse instanziert wird.

__destruct(): ist das Gegenteil von __construct() und wird ausgeführt wenn ein Objekt zerstört wird.

__call(): falls eine Methode aufgerufen wird die nicht deklariert ist, wird probiert __call() anzuwenden. __call($sMethodenName, $parameter) nimmt als erstes die aufgerufene Methode und als zweites die Methoden Parameter an.

__get(): greift wenn auf eine nicht vorhandene Objekt Eigenschaft zugegriffen werden soll. Es steht hier der Name der Eigenschaft zur Verfügung.

__set(): auf __set() wird zugegriffen, wenn einer nicht vorhandenen Objekt Eigenschaft ein Wert zugewiesen werden soll. __set() bekommt als Parameter den Namen der Eigenschaft, sowie den zugewiesenen Wert übergeben.

__isset(): wird durch isset() und empty() ausgeführt().

__unset(): wird durch die PHP Funktion unset() aufgerufen.

__sleep(): wird vor einer Serialisierung eines Objektes ausgeführt. Der Aufruf erfolgt somit bei einem Aufruf von serialize($oMeinObjekt).

__wakeup(): das Gegenstück von __sleep() wird durch unserialize() ausgeführt.

__toString(): sollte probiert werden ein Objekt in einen String zu verwandeln, wird diese magische Methode aufgerufen.

__set_state(): wird aufgerufen falls ein Objekt mit var_export() aufgerufen wird.

__clone(): bei dem Versuch ein Objekt mit clone() zu kopieren, wird die magische Funktion __clone() aufgerufen.

__autoload(): wird aufgerufen, wenn ein Objekt einer Klasse erzeugt werden soll, diese Klasse aber nicht deklariert ist. Hierbei ist zu beachten das __autoload() standardmäßig als normale Funktion aufgerufen wird und nicht als Objekt Methode. __autoload kann über Umwege auch als Objekt Methode aufgerufen werden; dazu in einem anderen Beitrag mehr.

Hier habt ihr nun alle magischen Methoden sowie deren Aufrufe. Die Methoden gibt es zwar schon länger, da ich diese Methoden aber nicht mehr missen möchte, wollte ich diese einmal aufführen.

Tags für diesen Artikel: , ,
Tweet This!Tweet This!

0 Trackbacks

  1. Keine Trackbacks

3 Kommentare

Ansicht der Kommentare: (Linear | Verschachtelt)
  1. Gute Zusammenfassung. Als nächstes solltest du auf die Eigenarten von __get/__set und __call eingehen ;-)
  2. Danke für das Lob, dass tut doch mal gut ;-) . Eine kurze Frage habe ich aber noch... auf welche Eigenarten willst du hinaus?
  3. Kurz & knackig - Schöne Zusammenfassung.

    Ein sehr ausführliches Tutorial zu den magischen Methoden von PHP und dessen Verwendung findet man zudem unter:

    http://www.freaky-scripts.de/2010/03/27/tutorial-magische-methoden-in-php-klassen-interzeptoren/

Kommentar schreiben


Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss um dieses Verfahren anzuwenden.
CAPTCHA


Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!