OOP mit PHP5 - Praxistutorial 1 - Der erste Zugriff
1. Die Abschnitte
- Einführung
- Konstruktor und Destruktor der Db-Klasse
- Konstruktor der Db_Request-Klasse
- Der erste Zugriff
- SQL-Fehler abfangen
- Zusätzliche SQL-Methoden
- Die Auswertungsschicht
- Abfragen
- Zusammenfassung
2. Pillepups
Um nun die Konstruktoren der beiden Klassen auszulösen, benötigen wir in der oop_4.php
unterhalb des bestehenden Codes nur
eine popelige Anweisung.
$request = new Db_Request;
Die Funktionsweise
Mit $request = new DB_Request;
erzeugen wir ein Objekt aus der Klasse DB_Request
. Damit wird auch automatisch
deren Konstruktor aufgerufen. Dort wird ebenfalls ein Objekt erzeigt, diesmal aus der Klasse Db
. Und das löst wiederum deren
Konstruktor aus. Der Destruktor dieser Klasse wird auch automatisch ausgeführt, da die Sichtbarkeit auf public
gesetzt wurde.
Aber das habe ich ja schon im vorherigen Abschnitt erwähnt.
3. Abfangen von Fehlern
In diesem Tutorial kümmern wir uns ja ausnahmslos um Fehler, die mit der Datenbank zu tun haben. In diesem ersten Schritt geht es also um Probleme beim Verbindungsaufbau und der Auswahl der Datenbank. Dabei sieht das Konzept so aus.
- Die Klasse
Db
wirft (throw
) im Falle eines Fehlers die Exceptions. -
Die Klasse
Db_Request
versucht (try
), sich mit der Datenbank zu verbinden und fängt (catch
) die Exceptions der KlasseDb
auf, wenn das misslingt. -
Dann schreibt die Klasse
Db_Request
neben einer Statusmeldung den MySQL-Fehler in die "Array"-Eigenschaft$message
.
4. Fehlerbehandlung
Der Einfachheit halber machen wir das direkt in der oop_4,php
. Das ist zwar nicht die feine englische Art, da man bei größeren
Projekten dafür eine eigene Fehlerklasse haben sollte. Wir machen es aber dennoch, da es den Rahmen dieses Tutorials sprengen würde.
if (empty($request -> message))
{
}
else
{
print_r($request -> message);
}
5. Tests
Um nun herauszufinden, ob wir alles richtig gemacht haben, ändert einfach mal die Zugangsdaten. Gebt einen falschen Host an, ein
fehlerhaftes Passwort oder eine Datenbank, die nicht existiert. Dann liefert das print_r($request -> message);
zum
Beispiel so was.
Array
(
[status] => failed
[message] => Db Connection Error:
Select Db Unknown database 'php_oop_bla'
)
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt