Hauptmenü

Untermenü

OOP mit PHP5 - Praxistutorial 1 - Einführung

1. Die Abschnitte

2. Das Ziel

Im Gegensatz zum dritten Einstiegstutorial wollen wir diesmal eine halbwegs vernünftige Datenbankklasse aufbauen. Und das auch mit einer sauberen Ausnahmebehandlung und einer darüber liegenden Schicht, die die Anfragen sendet und das Ergebnis entsprechend verarbeitet. Dabei werden wir zu Übungszwecken mal das Error Reporting ziemlich nach unten schrauben. Das ist zwar nicht ganz im Sinne des Erfinders, aber wir machen es (mal wieder) trotzdem. Warum? Erkläre ich gleich.

3. Der Hintergrund

Dazu greife ich mal auf ein Beispiel zurück, das ich für einen ehemaligen Kollegen (Tach Frau Miiiiielke grins!) programmiert habe. Woher der dämliche Name kommt? Ganz einfach. Er sagte immer zu mir "Guck mal, Frau Tietze". Und da wir beide große Loriot-Fans sind, hat sich das eingebürgert.

Bei besagter Programmierung ging es um Testcases im Rahmen einen Projektes, das auf qooxdoo aufbaute. Da es sich dabei um ein (ziemlich geniales) JavaScript-Framework handelte, mussten alle Anfragen an die Datenbank über Ajax erfolgen. Dabei war das Schema immer dasselbe. Daten suchen, ändern, löschen oder neu eintragen.

4. Die Struktur

Da wie schon gesagt, alles über Ajax laufen sollte, habe ich eine kleine Datenbank-Klasse entwickelt, die von einer übergeordneten Anfrage-Klasse angesteuert wird. Die verarbeitet dann auch die Ausnahmebehandlungen und reicht das Ergebnis weiter durch. Ihr müsst also folgenden Aufbau erstellen.

Die Datenbank

Rechts unter dem Punkt Daten findet ihr einen SQL-Dump. Einfach entpacken, einspielen und fertig. Vorausgesetzt, ihr habt nicht schon eine Datenbank namens php_oop, denn die wird dann gehimmelt.

5. Die Vorgehensweise

Beim oben erwähnten Projekt haben wir JSON-Daten hin und her geschoben. Hier verzichten wir darauf und beschränken uns auf Arrays. Denkt auch bitte daran, dass die Vorgehensweise in diesem Tutorial an die damaligen Notwendigkeiten angepasst wurde. Da ich erst später zu den so genannten Design Patterns und zu PDO kommen werde, ist der Aufbau immer noch nicht ganz optimal. Aber schon besser.

Außerdem

... möchte ich euch noch ein paar grundsätzliche Dinge zeigen, auf die ich bisher nicht eingegangen bin. Speziell was Konstruktoren und Destruktoren angeht, wenn man ohne Vererbung arbeitet.

6. Vorarbeiten


// oop_4.php
<?php
  error_reporting (E_ERROR E_PARSE);
  function __autoload($class)
  {
    require 'class/'.$class.'.php';
  }
?>
// DB.php
<?php
  class DB
  {

  }
?>
// Db_Request.php
<?php
  class Db_Request
  {

  }
?>
// Db_Exception.php
<?php
  class Db_Exception extends Exception {}
?>

error_reporting

Da unser Projekt komplett über Ajax lief, mussten wir natürlich bestimmte Fehlermeldungen unterdrücken, da uns sonst schon bei Warnings alles um die Ohren geflogen wäre. Warum? Weil das die Datenstruktur zerstörte hätte, die wir an das Ajax-Script zurückgegeben haben. Wie ich schon sagte, ist das in anderen Fällen nicht so prickelnd, aber wir wollen diesmal alle möglichen Fehler (Parse Errors und Fatal Errors ausgenommen) in einem Array zurückgeben und dann darauf reagieren.

__autoload

Im Gegensatz zum vorherigen Tutorial war ich ein wenig schreibfaul und habe das .class bei den Dateinamen weggelassen. Wie __autoload funktioniert habe ich euch ja schon vorher gezeigt.

weiter zum nächsten Abschnitt