PHP 5.4 & MySQL 5.6 Grundkurs

Magische Methoden

Testen Sie unsere 1983 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Magische Methoden werden von PHP unter bestimmten Bedingungen automatisch aufgerufen. Wie praktisch diese Methoden sind und wie Sie richtig darauf reagieren, lernen Sie in diesem Video.

Transkript

Magische Methoden erkennen Sie an den doppelten Unterstrichen am Anfang. Beispiele sind etwa construct oder destruct, die automatisch aufgerufen werden, wenn ein neues Objekt erstellt wird. Es gibt jetzt eine Reihe von weiteren magischen Methoden. Bei der objektorientierten Programmierung in PHP, werden häufig alle Klassen in eigene Dateien untergebracht, die dann bei Bedarf eingebunden werden. Und genau dafür ist die magische Methode autoload sehr praktisch. autoload, Sie sehen hier ein Beispiel, wird automatisch aufgerufen, wenn ein Objekt einer Klasse erstellt ist, deren Definition nicht vorhanden ist. Und autoload erwartet als Parameter den Namen der Klasse. In diesem Beispiel hier sehen Sie, wird eine Klasse Beispiel1 aufgerufen. Die ist aber hier nicht definiert. Das heißt, an der Stelle wird autoload aufgerufen. Es erwartet den Namen der Klasse. Und hier habe ich jetzt zum Beispiel implementiert, dass die entsprechende Datei eingebunden wird. Im Beispiel heißt die Datei genauso wie die Klasse, aber hat zusätzlich die Endung php. Das ist dieses einfache Beispiel, was hier nur eine Information ausgibt. Und das kann dann ganz normal hier verwendet werden. Und dass es eingebunden wird, dafür sorgt eben dieses autoload. Und wenn wir das hier aufrufen, dann sehen Sie, kommt diese Ausgabe, dass die Beispiele geladen werden. Das heißt, dieses autoload hat funktioniert. get und set sind weitere magische Methoden. Sie sehen hier __set und __get. Und diese werden automatisch aufgerufen, wenn ein Zugriff auf eine nicht definierte Eigenschaft erfolgt. __set, wenn man versucht, eine nicht definierte Eigenschaft zu setzen, und __get, wenn man versucht eine nicht definierte Eigenschaft zu lesen. Und wenn Sie diese beiden Methoden jetzt in Ihre Klasse implementieren, können Sie einfach sagen, was soll in diesem Fall passieren. Bei __set hier, wenn jetzt versucht wird, eine Eigenschaft zu setzen, die es nicht gibt, soll folgendes geschehen. Sie sehen hier kann ich auch noch unterscheiden, je nachdem wie die Eigenschaft heißt. Ich habe hier einmal unterschieden, wenn die Eigenschaft "alter" ist, lasse ich eine Meldung ausgeben, sonst lasse ich eine andere Meldung ausgeben. Und hier sehen Sie auch die Implementierung der Methode __get. Da wird einfach nur die Meldung in dem Fall ausgegeben, die Eigenschaft, die hier gerade versucht wird zu lesen, die gibt es nicht. Und hier sehen Sie dann, wie das Ganze angewand wird. Hier wird jetzt versucht, diese Eigenschaft "alter" auf 2 zu setzen. Die Eigenschaft "alter" ist hier oben in meiner Klasse nirgendwo definiert. Sie sehen, es gibt hier eine Eigenschaft "vorname", aber es gibt keine Eigenschaft "alter". Deswegen wird hier __set aufgerufen. Und dann wird überprüft, was für ein Wert das ist. Und da es wirklich "alter" ist, kommt die Meldung "Das Alter ist hier nicht relevant". Hier unten wird dann außerdem versucht, die Eigenschaft "name" zu lesen. Dann sehen Sie auch die Eigenschaft "name" gibt es nicht. Es wird versucht, sie zu lesen, deswegen wird automatisch diese Methode hier aufgerufen, die Methode __get. Und dann kommt die Meldung "Die Eigenschaft hmhmhm gibt es nicht". Schauen wir und das hier einmal an. Dann sehen Sie, das hier wurde ausgegeben, weil man versucht hat, das Alter zu setzen, und hier kommt die allgemeine Meldung, dass diese Eigenschaft nicht vorhanden ist. Mit get und set können Sie also auf diese Art steuern, was passieren soll, wenn auf Eigenschaften zugegriffen wird, die es nicht gibt in der Klasse. Und magisch sind auch diese beiden Methoden. Das erkennen Sie zum einen an den doppelten Unterstrich. Und das magische an ihnen ist, dass sie eben automatisch aufgerufen werden. Genauso automatisch aufgerufen wird auch die Methode tostring. Und diese können Sie implementieren, und dann wird diese Methode automatisch aufgerufen, wenn man versucht, ein Objekt direkt auszugeben. Hier beispielsweise mit echo. Wenn Sie das sonst machen, dann liefert das nichts Vernünftiges, einfach echo Objekt Name. Besser wäre noch print_r oder var_dump, wenn Sie das benutzen, aber eine ganz genaue Steuerung haben Sie eben, wenn Sie tostring in Ihre Klasse implementieren und einfach sagen, was soll dann passieren, wenn das versucht wird auszugeben. Und hier lasse ich die ganzen Eigenschaften als ungeordnete Liste ausgeben. Wenn wir uns auch hier mal das Ergebnis anschauen, dann sehen Sie hier, werden einfach die Eigenschaften aufgelistet. Die magische Methode autoload ist sicher am wichtigsten von den hier vorgestellten, weil sie dazu benutzt werden kann, Klassen nach Bedarf zu laden. Aber auch die anderen, wie dieses tostring oder get und set, sind praktisch. Und alle magischen Methoden erkennen Sie an dem doppelten Unterstrich, und gemeinsam ist ihnen, dass sie magisch, das heißt in bestimmten Fällen, automatisch aufgerufen werden.

PHP 5.4 & MySQL 5.6 Grundkurs

Steigen Sie auch ohne Vorwissen in die Programmierung PHP- & MySQL-basierter Webseiten ein und lernen Sie die Sprachgrundlagen wie Bedingungen, Schleifen, Funktionen usw. kennen.

7 Std. 9 min (86 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!