de.comp.lang.php.* FAQ

10.2. Wie definiere ich eine Klasse? Wie erzeuge ich ein Objekt?

Antwort von Kristian Köhntopp

Angenommen, es ist eine Reihe von Funktionen vorhanden, die mit einer Datenbank kommunizieren und diese Funktionen sollen in eine Klasse umgewandelt werden:

 $Link_ID  = 0;  // ID der aktuellen DB-Verbindung
 $Query_ID = 0; // ID des aktuellen Abfrageresultates
 $Error    = 0;    // Letzte Datenbank-Fehlermeldung

 function connect() { ... }

 function query()   { ... }

 function next_record() { ... }

 function num_rows() { ... }

Aus diesen Variablen und Funktionen wird eine Klasse, indem man vor alle verwendeten Variablen das Schlüsselwort var schreibt und indem man alle Variablen und Funktionen mit einem class-Konstrukt umschließt.

class DB_MiniSQL {
 var $Link_ID  = 0; // ID der aktuellen DB-Verbindung
 var $Query_ID = 0; // ID des aktuellen Abfrageresultates
 var $Error    = 0; // Letzte Datenbank-Fehlermeldung

 function connect() { ... }

 function query()   { ... }

 function next_record() { ... }

 function num_rows() { ... }
}

Klassen selbst sind nur Baupläne, sie erzeugen keine Variablen und die Funktionen, die in ihnen enthalten sind, lassen sich so nicht verwenden. Mit Hilfe der Anweisung new läßt man den PHP-Interpreter eine Variable, ein Objekt, nach diesem Bauplan bauen.

 $db1 = new DB_MiniSQL; // $db1 ist ein Objekt der Klasse DB_MiniSQL
 $db2 = new DB_MiniSQL; // $db2 ist noch ein Objekt derselben Klasse

Das Objekt $db1 kann man sich wie ein Array mit einer besonderen Syntax vorstellen. Anstatt auf $db1["Link_ID"] und $db1["Error"] zuzugreifen, muss man $db1->Link_ID und $db1->Error verwenden. Auch die Funktionen in einem Objekt lassen sich so aufrufen: $db1->connect(), $db1->query() und so weiter.

Ein beliebter Fehler ist, $db1->Error zu meinen, aber $db1->$Error zu schreiben. Das ist falsch: Der vollständige Name der Variablen ist db1->Error, mit einem $ davor, um ihn als Variablennamen zu kennzeichnen.

Valid HTML 4.01! Valid CSS!

10.2. Wie definiere ich eine Klasse? Wie erzeuge ich ein Objekt?
http://www.php-faq.de/q/q-klassen-wie.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team