| |
| * Link führt ins Internet |
|
| |
Der Weg zur objektorientierten Programmierung in PHP führt über das Schlüsselwort class. Mit Hilfe von class sind Sie in der Lage Klassen zu erzeugen, und aus diesen später Instanzen abzuleiten, mit denen sie arbeiten werden.
Das Schemata einer Klassendefinition stellt sich, wie folgt dar:
// Klasse
class classname
{
var $a; // Eigenschaft1
var $b; // Eigenschaft2
...
// Konstruktor
function classname() {
$this->a = wert_a;
...
}
// Methode
function funkname() {
$this->b = wert_b;
...
}
...
}
Fallbeispiel – Warenkorb
<pre>
<?php
// Klasse (ohne Konstruktor)
class warenkorb
{
var $artikel;
var $stueckzahl;
function anzahlErhoehen($artnr, $stueck) {
$this->stueckzahl[$artnr] += $stueck;
}
function eintragen($artnr, $name) {
$this->artikel[$artnr] = $name;
$this->stueckzahl[$artnr] = 1;
}
}
// Objekt erzeugen
$meinWarenkorb = new warenkorb;
// Produkte in den Warenkorb legen
$meinWarenkorb->eintragen("1001","Skibrille");
$meinWarenkorb->eintragen("1002","Socken");
// Anzahl bestimmter Produkte erhöhen
$meinWarenkorb->anzahlErhoehen("1002",10);
// Ausgabe
echo "Vom Artikel " . $meinWarenkorb->artikel["1001"];
echo " sind " . $meinWarenkorb->stueckzahl["1001"] . " Stück enthalten.<br>";
echo "Vom Artikel " . $meinWarenkorb->artikel["1002"];
echo " sind " . $meinWarenkorb->stueckzahl["1002"] . " Stück enthalten.<br>";
echo "<p>";
// Ausgabe der Struktur des Objekts
print_r($meinWarenkorb);
?>
</pre>
|
Ausgabe
Vom Artikel Skibrille sind 1 Stück enthalten.
Vom Artikel Socken sind 11 Stück enthalten.
warenkorb Object
(
[artikel] => Array
(
[1001] => Skibrille
[1002] => Socken
)
[stueckzahl] => Array
(
[1001] => 1
[1002] => 11
)
)
|
Das Beispiel zeigt einige wesentliche Prinzipien im Umgang mit einer einfachen Klasse. Sie sollten sich mit den einzelnen Punkten des Beispiels vertraut machen.
Einsatz von class
Die Klassendefinition wird mit dem Schlüsselwort class eingeleitet und im vorliegenden Fallbeispiel um den Klassennamen warenkorb erweitert:
class warenkorb
Die gesamte Klasse ist mit geschweiften Klammern umgeben.
Einsatz von this
Um innerhalb der Klasse auf sich selbst verweisen zu können, wir das Schlüsselwort this eingesetzt. Beachten Sie die Schreibweise beim Zugriff auf die Variable der Klasse, diese können die Eigenschaften der Instanz bilden.
$this->stueckzahl[$artnr] += $stueck;
Das $-Zeichen steht vor this, anschliessend wird der Verweis mit dem speziellen Operator -> gebildet. Achten Sie stets darauf, die korrekte Syntax zu verwenden. Es ist ein beliebter Fehler, etwa this->$var oder gar $this->$var zu schreiben. Problematisch ist, dass PHP dies nicht immer mit einer Fehlermeldung quittiert, sondern oft wird das Skript einfach weiter verarbeitet.
Einsatz von var
Mit Hilfe des Schlüsselwort var werden Variablen im Objekt angelegt, diese ergeben wiederum die Eigenschaften des Objekts.
var $artikel;
var $stueckzahl;
Die Namen sind in dieser Klasse lokal. Abgesehen von der Verwendung in den Methoden können sie auch als Eigenschaften dienen.
Es schliessen sich zwei Methoden ans, die als normale Funktion definiert werden. Wird auf die Klasse selbst zugegriffen, dient das Schlüsselwort this als Indikator.
Einsatz von new
Auch der Einsatz der Klasse unterscheidet sich von der normaler Funktionen. Um die Klasse nutzen zu können, muss zuerst eine Instanz der Klasse gebildet werden:
$meinWarenkorb = new warenkorb;
Die Variable $meinWarenkorb ist nun ein Objekt. Die eigentliche Instanzierung nimmt das Schlüsselwort new vor, der Parameter ist der Name einer zuvor definierten Klasse.
Nutzen des Objekts der Klasse
Vor Ihrem geistigen Auge können Sie die in der Klassendefinition verwendeten this-Schlüsselwörter durch den Namen des Objekts ersetzen.
$meinWarenkorb->eintragen("1001","Skibrille");
Diese Zeile enspricht dem Aufruf der Methode eintragen(). Die gleiche Syntax wird auch verwendet, um die Eigenschaften des Objekts abzufragen:
$meinWarenkorb->artikel["1001"];
Sollte Ihnen diese Form schwer lesbar erscheinen, denken Sie daran, dass es sich bei $meinWarenkorb tatsächlich um eine reguläre Variable handelt. Diese Variable enthält ein Objekt, auf dessen Bestandteile Sie mit Hilfe des Operator -> verweisen. Alles was hinter dem Namen des Bestandteils steht, ist von dessen Konstruktion abhängig und unterscheidet sich nicht von der herkömmlichen Syntax.
|
|
|
|
|
|
|