OOP PHP5 - Grundlagen - Referenzierung
1. new
Damit erzeugt man eine Referenz auf ein Objekt. Dabei handelt es sich um eine Art von Hinweis, den PHP zur Steuerung benötigt. Diese Referenz legt man dann in einer Variablen ab, damit man später darauf zugreifen kann. Ach ja, man kann die entsprechende Klasse ohne Klammern aufrufen, wenn man keine Parameter für den so genannten Konstruktor übergeben möchte. Auf den gehe ich aber später ein.
class Mensch
{
...
}
$dieter = new Mensch;
$doerte = new Mensch;
So, damit haben wir zwei Objekte aus der Klasse Mensch erzeugt. Fragt sich nur, wie man auf die Eigenschaften und Methoden zugreifen kann.
2. Die Sache mit den Pfeilen
Nein, hier geht es nicht um die Dinger, mit denen Amor um sich zu schießen pflegt. Auch wenn er in unserem Beispiel bei Dieter wohl
getroffen hat. Will ein Objekt auf Methoden oder Eigenschaften "seiner" Klasse zugreifen, so geschieht dies mit ->
.
class Mensch
{
var $geschlecht;
function pflegHaushalt()
{
...
}
}
$dieter = new Mensch;
$dieter -> geschlecht = 'Mann';
$doerte = new Mensch;
$doerte -> pflegHaushalt();
Was haben wir jetzt getan? Zuerst mal dem Objekt $dieter
ein Geschlecht verpasst. Ist bei Männern ja gaaaanz wichtig. Und das
Objekt $doerte
, dem noch kein Geschlecht zugeordnet wurde, kümmert sich um ihren Haushalt. Mann, bin ich ein Sexist. Darum
leiste ich jetzt schon mal Abbitte bei allen Damen, die sich hierhin verirrt haben. Denn es kommt noch schlimmer.
Wichtig
Wenn man auf eine Eigenschaft zugreifen möchte, so darf man nicht mit dem $
-Zeichen arbeiten! Das hat einen
ganz bestimmten Grund, zu dem ich anschließend komme. Um nun das Konzept zu verstehen, solltet ihr hinter obigen Code mal ein
print_r($dieter)
setzen. Dann bekommt ihr ein Mensch Object ( [geschlecht] => Mann )
zurückgeliefert. Ihr seht
also, dass Dieter ein Objekt vom "Typ" Mensch
ist und dessen Eigenschaft geschlecht
"Mann" ist. Spielt mal
ein wenig mit Dörte herum (nein, nicht so!), dann werdet ihr die möglichen Unterschiede selber kennen lernen.
3. $this
Wenn zum Beispiel eine Klasse auf seine eigenen Eigenschaften und Methoden zugreifen möchte, so wird neben der oben beschriebenen
Pfeilnotation noch ein $this
benötigt. Dabei handelt es sich genau genommen, um einen Verweis auf das eigene Objekt und dessen
Methoden und Eigenschaften. Wenn nun eine Klasse so konzipiert ist, dass man die Eigenschaften eines Objektes über Methoden zuweisen kann,
so sieht das zum Beispiel so aus.
class Mensch
{
var $geschlecht;
function setzGeschlecht($var)
{
$this -> geschlecht = $var;
}
}
$doerte = new Mensch;
$doerte -> setzGeschlecht('Frau');
Jetzt haben wir aus Dörte eine Frau gemacht. Nein! Nicht das, was ihr schon wieder denkt. Über die Methode setzGeschlecht
hat das Objekt $doerte
seine eigene(!) Eigenschaft geschlecht
gesetzt. Und da dies innerhalb der Klasse geschah,
wurde das $this
benutzt. Es gibt da noch weitere Möglichkeiten, aber die kommen später.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt