Hauptmenü

Untermenü

OOP mit PHP5 - Einstiegstutorial 3 - Die MySQL-Klasse Teil 2

1. Die Abschnitte

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