Klassen
Eine Klasse ist eine Sammlung von Variablen und Funktionen, die
mit diesen Variablen arbeiten. Eine Klasse wird folgendermaßen
definiert:
In diesem Beispiel wird eine Klasse "Cart" definiert. Sie
besteht aus einem assoziativen Array von Produkten im
Einkaufswagen und zwei Funktionen zum Hinzufügen und Entfernen von
Artikeln.
| Achtung |
Die folgenden warnenden Bemerkungen gelten für PHP 4.
Der Name stdClass ist reserviert, da er intern
von Zend benutzt wird. Sie können in PHP keine Klasse mit dem
Namen stdClass haben.
Die Funktionsnamen __sleep und
__wakeup sind in PHP Klassen "magisch". Sie
können in Ihren Klassen keine Funktionen mit diesen Namen haben,
außer Sie wollen sie mit dieser "magischen" Funktionalität
assoziieren. Mehr Informationen dazu finden Sie weiter unten.
Sämtliche mit __ beginnende Funktionsnamen sind PHP als "magisch"
vorbehalten. Es wird empfohlen, in PHP keine Funktionsnamen mit
__ zu verwenden, außer Sie möchten dokumentierte "magische"
Funktionalität.
|
Anmerkung:
In PHP 4 sind nur konstante Initialisierungen für
var Variablen erlaubt. Um Variablen mit nicht
konstanten Werten zu initialisieren, benötigen Sie eine Funktion
zur Initialisierung, welche beim Erstellen eines Objektes
automatisch von der Klasse aufgerufen wird. Eine solche Funktion
wird Konstruktor genannt (siehe unten).
Klassen sind Typen, das heißt sie sind die Blaupausen für reale
Variablen. Um sie zu nutzen, muss zunächst eine Variable mit dem
Operator new angelegt werden.
Dies erstellt die Objekte $cart und $another_cart aus der Klasse
Cart. Dann wird die Funktion add_item() des $cart Objektes
aufgerufen, um $cart einen Artikel mit der Artikelnummer 10
hinzuzufügen. 3 Artikel mit der Artikelnummer 0815 werden
$another_cart hinzugefügt.
Sowohl $cart als auch $another_cart haben die Funktionen
add_item(), remove_item() und die Variable items. Dies sind
verschiedene Funktionen und Variablen. Sie können sich Objekte
ähnlich den Verzeichnissen in einem Dateisystem vorstellen. Sie
können in einem Dateisystem zwei verschiedene Dateien README.TXT
haben, solange sie sich in verschiedenen Verzeichnissen befinden.
So wie Sie in Verzeichnissen den vollen Pfadnamen eingeben müssen,
um jede Datei von dem obersten Verzeichnis aus zu erreichen, müssen
Sie auch den vollen Namen der aufzurufenden Funktion angeben: Das
heißt für PHP, dass das Hauptverzeichnis der globale Namensbereich,
und der Separator des Pfadnamens -> wäre. Deshalb benennen die
Namen $cart->items und $another_cart->items auch zwei
verschiedene Variablen. Beachten Sie, dass die Variable
$cart->items, und nicht $cart->$items genannt wird, da
ein Variablenname in PHP nur ein einziges Dollarzeichen hat.
Innerhalb einer Klassendefinition ist nicht bekannt, unter welchem
Namen das Objekt in Ihrem Programm erreichbar sein wird: Als die
Klasse Cart geschrieben wurde war nicht bekannt, dass das Objekt
später $cart oder $another_cart genannt wird. Deshalb können Sie
innerhalb der Klasse Cart selbst auch nicht $cart->items schreiben.
Um nun die eigenen Funktionen und Variablen innerhalb einer Klasse
anzusprechen, können Sie die Pseudo-Variable $this verwenden, welche
Sie auch als 'meine eigene' oder 'aktuelles Objekt' verstehen können.
Deshalb kann '$this->items[$artnr] += $num' auch als 'addiere $num
zu $artnr in meinem eigenen Array items', oder 'addiere $num zu
$artnr im Array items innerhalb des aktuellen Objektes' lesen.
Anmerkung:
Es gibt ein paar angenehme Funktionen, um mit Klassen und Objekten umzugehen.
Mehr darüber erfahren Sie im Kapitel Klassen-
und Objekt-Funktionen.