OOP PHP5 - Magische Methoden
1. Einführung
Hierbei handelt es sich um alle Methoden, die von PHP automatisch ausgeführt werden, wenn eine bestimmte Situation eintritt. Dabei gibt es ein paar grundsätzliche Dinge, die berücksichtigt werden müssen.
- Alle magischen Methoden beginnen mit einem doppelten(!) Unterstrich, also
__
. - Alle Methoden, die damit beginnen, werden von PHP als magisch eingestuft.
- Darum sollte man eigene Methoden niemals mit zwei Unterstrichen beginnen lassen.
- Magische Methoden werden zwar automatisch ausgeführt, müssen aber trotzdem in die jeweiligen Klassen eingebunden werden!
2. Feinheiten
Grundsätzlich muss man zwischen zwei Funktionsweisen unterscheiden. Da gibt es einmal die Methoden, die einfach nur ihren Job machen. Ist im Moment ein wenig schwer zu verstehen, aber die Informationen dazu folgen auf dem Fuße. Und dann gibt es noch Methoden, die mögliche Fehler abfangen und entsprechend darauf reagieren.
Wichtig
Ohne jetzt schon auf Details einzugehen, möchte ich doch vorab etwas loswerden. Ich selber halte manche magische Methoden für äußerst problematisch, da sie Dinge selbstständig erledigen, für die eigentlich der Entwickler zuständig sein sollte. Sie unterstützen also fehlerhaften und schlampigen Code. Darum sollte man sie meiner Meinung nach eigentlich nicht einsetzen. Um welche Problemfälle es sich dabei handelt, zeige ich euch an den entsprechenden Stellen.
3. Definitionsprobleme
Leider ist sich die PHP-Gemeinde ziemlich uneins, wenn es darum geht, was zu den magischen Methoden gehört. Die einen sagen so, die anderen so und manche gar nichts. Wenn ihr mal im Internet nach obigem Stichwort sucht, so werdet ihr schnell feststellen, dass die Informationen dazu äußerst widersprüchlich sind. Darum werde ich euch zuerst mal die verschiedenen Ansichten zu diesem Thema kundtun, auf dass ihr einen ersten Überblick darüber bekommt.
Konstruktor und Destruktor
Bei diesen beiden Methoden scheiden sich die Geister ganz besonders. Einige zählen sie zu den magischen Methoden, andere nicht. Sebastian Bergmann zum Beispiel benutzt in diesem Zusammenhang der Ausdruck "besondere Methoden" als grundsätzlichen Oberbegriff.
Magische Methoden und Interzeptormethoden
Etliche Leute setzen diese beiden Begriffe gleich, andere dagegen nicht. Und das ist ziemlich verwirrend. Ich orientiere mich daher mal an dem oben schon erwähnten Herrn Bergmann, der nur von Interzeptormethoden spricht. Allerdings taucht der Ausdruck "magische Methoden" bei ihm gar nicht auf. Ist alles recht seltsam.
Welche Methoden gehören dazu?
Auch hier gibt es gehörige Unterschiede. Allerdings wird bei den meisten Seiten nie gesagt, ob es sich um eine vollständige Liste handelt oder ob man aus Faulheit etwas weggelassen hat. Ich gehe praktisch an die Sache heran und stelle euch nur mal die nützlichsten Methoden vor.
4. Meine Vorgehensweise
Ob der großen Sprachverwirrung in der PHP-Gemeinde habe ich mich zu den folgenden Definitionen entschlossen, die sich an der offiziellen PHP-Dokumentation orientiert. Denn die sagt Folgendes.
- Alle Methoden die mit dem doppelten Unterstrich beginnen, zählen zu den magischen.
- Alle Methoden außer den speziell ausgewiesenen gehören nicht(!) zu den Interzeptormethoden.
-
Obwohl
__autoload
zu den Interzeptormethoden gehört, so führe ich es separat auf, da es meiner Meinung nach eine Sonderstellung einnimmt.
Danksagung
In diesem Zusammenhang möchte ich mich noch bei meinem Kollegen "onemorenerd" aus meinem Lieblingsforum bedanken, der mir bei den Begrifflichkeiten sehr geholfen hat. Thx.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt