Objekte in PHP
In diesem Kapitel unseres Tutorials kommen wir zu Klassen und Objekte.
Einem der wichtigsten Themengebiete in modernen Programmiersprachen ist die so genannte 'ObjektOrientierte Programmierung' ( OOP ). Ein Klasse ist in diesem Fall eine Zusammenfassung von Eigenschaften und Fähigkeiten die eine Gruppe von Objekten gemein sind.
Dieser Satz mag Sie eher verwirrt haben als alles andere, daher ziehen wir doch einfach ein Beispiel herran:
Klasse Auto:
Jedes Auto hat in der Regel Eigenschaften:
- eine Farbe
- ein Baujahr
- Typenbezeichnung
Jedes Auto kann in der Regel Fähigkeiten:
- fahren
- hupen
- blinken
Und schon haben wir unser erstes Objekt !
Mit diesen wenigen angaben können wir fast alle Autos dieser Welt erfassen. Zugegeben es fehlen noch einige Unterscheidungsmerkmale aber das soll uns jetzt nicht interessieren.
Jetzt wo wir Festgelegt haben was unsere 'Klasse Auto' alles beinhalten soll müssen wir uns eine Art Vorlage oder Schablone baue die für uns all diese Eigenschaften und Fähigkeiten zusammenfasst. Hierzu gibt es in php Klassen.
Schauen wir uns unsere Auto-Klasse an:
<?php
class Auto
{
var $farbe;
var $baujahr;
var $typ;
function fahren()
{
echo "Brum brum, von A nach B";
}
function hupen()
{
echo "Tüt tüt";
}
function blinken()
{
echo "Blink links, blink rechts";
}
}
?>
Mit dem Wort "class" und dem dannach folgendem Namen für unsere Klasse erstellen wir uns eine Vorlage für unseren Autos.
Weil es sich hier um ein wichtiges und oft missverstandenes Thema handelt möchte ich noch einen weiteren Vergleich heranziehen:
Stellen Sie sich vor die Klasse wäre eine Gussform für Zinnsoldaten:
Jeder Soldat aus dieser Form wäre gleich. ( ein Objekt )
Aber trotzdem könnten Sie die Soldaten in unterschiedlichen Farben bemalen.
Und obwohl alle Soldaten ( Objekte ) aus der selben Gussform ( Klasse ) kommen würden Sie nie die Gussform selber bemalen oder auf dem Spielfeld der Zinnsoldaten aufstellen !
Bitte behalten Sie diesen sehr bildlichen Vergleich beim arbeiten mit Klassen im Hinterkopf.
Zurück zu unserem php-Klassen-Code:
Alle Eigenschaften und und Fähigkeiten unserer Autos stehen in geschweiften Klammern "{ ... }". Wärend die Eigenschaften als Variablen mit einem vorranstehenden ' var ' abgebildet werden, sind die Fähigkeiten unserer Autos nichts weiter als die Ihnen bereits bekannten Funktionen.
Fassen wir das zusammen: In einer Klasse werden also Variablen und Funktionen zusammengefasst die sich auf ein Objkt ( unser Auto ) beziehen.
Man spricht daher auch von 'Klassen-Variablen' und 'Klassen-Funktionen', oder im Englischen von 'member' und 'member-functions'.
Ok, lassen Sie uns nun einige Auto-Objekte erstellen:
....
..
$auto_1 = new Auto();
$auto_2 = new Auto();
$auto_3 = new Auto();
..
...
Mit diesen Zeilen haben wir jetzt 3 Auto Objekte in Leben greufen die alle die oben genannten Eigenschaften und Fähigkeiten haben.
Wie sprechen wir jetzt diese Eigenschaften an ?
Ein Beispiel:
....
..
$auto_1 = new Auto();
$auto_2 = new Auto();
$auto_3 = new Auto();
$auto_1->farbe = "Silber";
$auto_2->farbe = "Blau";
$auto_3->farbe = "Schwarz";
$auto_1->typ= "Polo";
$auto_3->typ= "Trabbi";
$auto_2->baujahr= "1998";
..
...
Sie sehen das wir die Eigenschaften eines Objektes mit einem Pfeil-Operator " -> " ansprechen und sie ansonsten wie ganz normale Variablen behandeln.
Was haben wir jetzt für Autos ?
- Auto 1 ist ein silberner Polo
- Auto 2 ist ein Blauer Trabbi
- Auto 3 ist ein schwarzes Auto mit dem Baujahr 1998. Einen Typ haben wir ja noch nicht gesetzt.
Jetzt möchten wir natürlich auch die Fähigkeiten ( Klassen-Funktionen ) unserer Auto-Objekte benutzen, dies mach wir ebenfalls mit Hilfe des Pfeiloperators -> .
Schauen wir uns das an:
....
..
$auto_1 = new Auto();
$auto_2 = new Auto();
$auto_3 = new Auto();
$auto_1->fahren();
$auto_2->hupen();
$auto_3->blinken();
..
...
Die Ausgabe diese Codes:
Brum brum, von A nach B
Tüt tüt
Blink links, blink rechts
Nun wäre es doch interessant wenn wir den Wert einer Eigenschaft mit einer Funktion ausgeben könnten.
Also passen wir doch unser Klassen-Funktion ' hupen ' ein wenig an:
...
..
function hupen()
{
echo "Tüt tüt, ich hab die Farbe ". $this->farbe ;
}
..
...
Die Variable ' $this ' ist Ihnen hier sicher direkt aufgefallen, bitte haben Sie noch einen Moment Gedult was die Erklährung dazu betrifft. So nun müssen wir diese geänderte Funktion einmal testen:
....
..
$auto_1 = new Auto();
$auto_2 = new Auto();
$auto_3 = new Auto();
$auto_1->farbe = "Silber";
$auto_2->farbe = "Blau";
$auto_1->hupen();
$auto_2->hupen();
$auto_3->hupen();
..
...
Und, können Sie sich die Ausgabe schon vorstellen ?
Schauen wir Sie uns zusammen an:
Tüt tüt, ich hab die Farbe Silber
Tüt tüt, ich hab die Farbe Blau
Tüt tüt, ich hab die Farbe
Sie sehen das nun Auto 1 und Auto 2 Ihre Farbe bei hupen mit ausgeben. ( zugegeben: sehr sinnlos ! ) Aber das macht Ihnen vielleicht schon die Bedeutung der Variable $this deutlicher. Mit $this können Sie in einem Ihrer Objekte auf Eigenschaften und Fähigkeiten des Objekts zugreiffen.
Also bedeutet in einem Objekt: ' $this->farbe ' siviel wie ' meine Farbe '. Sie können genau so mit ' $this->hupen ' eine Funktion des Objekts selbst aufrufen.
Sol zum Beispiel bei jedem hupen auch gleich geblinkt werden, sähe unsere hupen Funktion so aus:
...
..
function hupen()
{
echo "Tüt tüt, ich hab die Farbe ". $this->farbe ;
$this->blinken() ;
}
..
...
Ich hoffe das ich Ihnen das komplexe Thema von Klassen und Objekten ein wenig näher bringen konnte. Wenn Sie noch Tiefer in php einsteigen wollen informieren Sie sich doch über Schulungen in unserem Haus.
Ihr Ansprechpartner :
Kai Niklas - Geschäftsführer Entwicklung
Tel.: +49 28 41 - 781 955 3
E-Mail: kn@mbon.de

Seite drucken




