Hauptmenü

Untermenü

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

1. Die Abschnitte

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