OOP mit PHP5 - Einstiegstutorial 3 - Die Abstract-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. Prüfen der Abfrage auf SELECT
... ist ehrlich gesagt ziemlich lächerlich. So was würde ich bei Projekten in dieser Form niemals einsetzen. Und warum hier? Weil ihr alle Vollpfosten und Trolle seid? Nein, weil ich euch ein paar Programmiertechniken zeigen möchte und dieses Beispiel dafür eigentlich recht gut ist.
Für die Überprüfung und Ausführung der Abfragen benötigen wir nur eine weitere Methode in der AbstractSQL.class.php
.
Dabei konzentrieren wir uns erst mal nur auf den ersten Teil und der sieht so aus.
public function checkQuery ($query)
{
if (preg_match ("/^select/i", $query))
{
$result = $this -> doSelect ($query);
if ($result)
{
return $result;
}
else
{
return false;
}
}
}
Erläuterung
Hier setzen wir einen pisseligen regulären Ausdruck ein, der nur überprüft, ob die SQL-Anfrage mit SELECT
beginnt. Dabei ist es lattens, ob das nun groß oder klein geschrieben wird (Modifier "i"). Dabei greifen wir auf die
Methode doSelect
der Elternklasse MySQL
zu. Dabei benötigen wir hier keine zusätzliche Ausnahme- /
Fehlerbehandlung, da das alles schon in letzterer Klasse erledigt worden ist.
3. Ausführen der übrigen Abfragen
Hier benötigen wir nur eine Ergänzung der if
-Bedingung, um die übrigen Abfragearten abzufangen. Allerdings brauchen
wir diesmal eine Ausnahmebehandlung, wenn speziell bei DELETE
-, REPLACE
- oder UPDATE
-Abfragen
kein Datensatz betroffen ist. Wir legen diesen Fall einfach als Fehler fest. Die Erweiterung der if
-Bedingung sieht dann
so aus.
public function checkQuery ($query)
{
...
else
{
$result = $this -> doQuery ($query);
if ($result)
{
return $result;
}
else
{
throw new dataxeception
(
'Fehler bei der Anfrage! Keine Datensätze geändert',1
);
}
}
}
Erläuterung
Mit $result = $this -> doQuery ($query);
schicken wir über die Elternklasse MySQL
alle
nicht-SELECT
-Abfragen an die Datenbank. Die Anzahl der betroffenen Datensätze arbeiten wir ja schon in der
MySQL.class.php
ab. Die übergibt uns ein true
wenn alles in Ordnung ist und ein false
, wenn
etwas nicht stimmt. Und den Fall arbeiten wir mit einer Exception ab (throw new dataexeception
).
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt