Notationen in der objektorientierten Programmierung

Wie man anhand der Beispielklasse mit dem Ball gut sehen kann, gibt es verschiedene Besonderheiten im Umgang mit Klassen, z.B. new, public, -> usw. Hier soll das mal kurz erklärt werden.

new

Mit new haben wir eine Referenz auf das Objekt erzeugt. Diese Referenz haben wir dann in der Variable $ball abgelegt.

Im Ballbeispiel haben wir geschrieben: $ball = new BallKlasse() { ... }. Man kann, wenn man keinen Konstruktor verwendet, das Ganze aber auch so schreiben: $ball = new BallKlasse { ... }. In der Variable $ball sind dann alle Eigenschaften und Methoden der Klasse enthalten, sie ist also wie eine Art Behälter. Und das ist natürlich total klasse. Wenn man bei der Programmierung mit Funktionen immer den entsprechenden file mit der Klasse einbinden muss - dazu muss man natürlich wissen, wie die Funktion heißt und wo sie sich befindet -, hat man bei der objektorientierten Programmierung sofort alle Funktionen (Methoden) des Objekts zur Verfügung, sobald die Variable referenziert ist.

->

Wenn man auf Eigenschaften oder Methoden einer Klasse zugreifen möchte, so passiert das mit ->.

Im Beispiel der BallKlasse haben wir beim Objekt $ball mit -> auf seine Methoden zugegriffen. Wir haben den Ball z.B. mit $ball->aufpumpen(1); mit etwas Luft aufgepumpt :). Naja, wir hätten aber auch gleich den Ball mit etwas Luft versehen können, z.B. mit $ball->groesse = 3. In diesem Fall hätten wir mit dem -> nicht auf eine Methode, sondern gleich auf eine Eigenschaft zugegriffen.

this

Wir haben also gesehen, wenn man auf Eigenschaften oder Methoden zugreift, dann passiert das mittels ->. Wenn das Ganze innerhalb der Klasse passiert, dann greift man darauf mit $this-> zurück.

::

Der doppelte Doppelpunkt kann sowohl innerhalb einer Klasse als auch außerhalb einer Klasse eingesetzt werden. Innerhalb einer Klasse kann man nämlich anstatt mit this auch mit self:: auf Eigenschaften oder Methoden zugreifen. Wenn man eine Klasse ableitet, kann man mit parent:: auf die Methoden oder Eigenschaften der Elternklasse zugreifen. Und bei statischen Methoden kann man mit Klasse::Methode() auch außerhalb einer Klasse so auf die Methode zugreifen. Wahnsinn, kein Wort verstanden? Macht nix, das erkläre ich z.B. hier.