OOP mit PHP5 - Einstiegstutorial 3 - Die MySQL-Klasse Teil 2
1. Die Abschnitte
- Einführung
- Die MySQL-Klasse Teil 1
- Die MySQL-Klasse Teil 2
- Die MySQL-Klasse Teil 3
- Die Abstract-Klasse Teil 1
- Die Abstract-Klasse Teil 2
- Nutzung der Klassen
2. Ein Hinweis
Diesmal werden wir nicht mit einer vernünftigen Fehlerbehandlung mittels try
und catch
arbeiten, sondern mit
dem popeligen or die (mysql_error())
. Das ist zwar alles andere als gut gelöst, aber im ersten Praxistutorial werde ich darauf
ganz detailliert eingehen. Denn hier sprengt es den Rahmen. Also merkt euch bitte, so wie hier sollte eine echte MySQL-Klasse
nicht aussehen! Allerdings geht es in diesem Tutorial um andere Dinge, darum mach ich es trotzdem.
3. Die Konstruktormethode
Hier wollen wir die Verbindung zum MySQL-Server und der entsprechenden Datenbank aufbauen. Das bietet sich ja an, da der Konstruktor einer Klasse automatisch aufgerufen wird, wenn ein Objekt davon erzeugt wurde. Die Verbindungsdaten selber sollen aber nicht in die Klasse eingebaut werden, denn wenn wir diese später für andere Zwecke nutzen, müssen wir sie entsprechend anpassen. Der neue Code unserer Methode sieht dann so aus.
protected function __construct ($host, $user, $password, $database)
{
$this -> con = mysql_connect ($host, $user, $password)
or die (mysql_error());
if (is_resource ($this -> con))
{
mysql_select_db ($database) or die (mysql_error());
}
}
Erläuterung
Die Parameter der Konstruktormethode $host, $user, $password, $database
repräsentieren die notwendigen Zugangsdaten, die
später übergeben werden. $this -> con = mysql_connect ...
stellt die Verbindung her. Die Eigenschaft $con
haben wir ja schon im ersten Teil festgelegt. if (is_resource ($this -> con))
überprüft, ob $con
eine Resource,
in diesem Fall eine Verbindungsressource, ist. Und zu guter Letzt wählen wir die gewünschte Datenbank mit mysql_select_db
aus.
Das oben beschriebene Beispiel habt ihr mit Sicherheit schon 1000 Mal selber durchgeführt, wahrscheinlich aber prozedural. Wo aber liegt denn nur der Vorteil in der objektorientierte Programmierung. Das ist auf den ersten Blick auch nicht zu erkennen. Ich hatte für diesen Zweck früher auch immer eine Datei, in der ich das prozedural erledigt habe. Also wozu das Buhei? Nun diese Frage kann ich euch zu diesem Zeitpunkt noch nicht beantworten.
4. Die Destruktormethode
Wird bekanntlich ebenfalls automatisch aufgerufen und zwar immer, wenn kein Verweis mehr auf ein Objekt vorhanden ist. In diesem Fall wird also die Verbindung zum MySQL-Server getrennt. Das sieht dann so aus.
protected function __destruct ()
{
if (is_resource ($this -> con))
{
mysql_close ($this -> con);
}
}
Ich glaube, eine Erläuterung kann ich mir sparen. Bleibt nur die Frage nach dem Sinn und Zweck. Nun, wenn man ein Objekt erzeugt, so wird dafür im Arbeitsspeicher der notwendige Platz reserviert, auch bei einer Verbindung zu einer Datenbank. Das ist zwar nicht viel, kann sich bei größeren Projekten aber schon mal zusammenläppern. Jetzt werden zwar einige von euch einwenden, dass die meistens MySQL-Server von selber am Ende eines Scriptes die Verbindung trennen. Trotzdem bleibt der Verweis darauf bestehen. Ein Destruktor ist also eine elegante Möglichkeit zum Aufräumen.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt