PHP5 - Basierte Datenbank Abstraktion (Objekt-Relationaler-Mapper)

Funktion

Das DB-Abstraction System stellt einen einfachen, modularen und erweiterbaren Objektrelationalen Datenbank Wrapper bereit. Das System ist auf Basis von PHP5 und MySQL entwickelt. Aktuell arbeite ich noch an einer zusätzlichen Abstraktionsschicht um das Datenbank Backend flexibler gestalten zu können. Grundlegend besteht das System derzeit aus zwei Basisklassen, zum einen dem dbObject und zum anderen der dbCollection. Ersteres stellt eine Abstraktion von Datenbank Tabellen als PHP5-Objekte bereit, wobei jedes Objekt einem Datensatz aus einer bestimmten Tabelle entspricht.

Um ganze Tabellen abbilden zu können, ist es notwendig mehrere Objekte zu bündeln, was mit Hilfe der dbCollection geschieht. Für jede spezifische Datenbanktabelle wird eine Konfigurationsklasse abgeleitet, welche Daten wie Tabellen- und Schlüsselnamen enthält. Grundlegende Lade-, Speicher- und Löschoperationen werden mit Hilfe der Basisklassen abgebildet. Spezielle Operationen können in den Konfigurationsklassen definiert, oder überladen werden.

Die Objektklasse verwaltet Daten als sogenannte Eigenschaften (properties) welche die Spalten der Datenbanktabelle abbilden. Dieses Konzept ermöglicht auch die Verwendung von virtuellen Eigenschaften, welche nicht permanent in der Datenbank gespeichert werden. Beispielsweise kann somit die Preisberechnung für ein Produkt direkt in der Objektklasse abgebildet werden, ohne Bruttopreise in der Datenbank zu speichern.

Prinzipiell kann das Abstraktionssystem in jedem PHP5 Projekt verwendet werden, jedoch bildet es auch eine optimale Basis für ein Mehrschichtiges Entwicklungsmodell, weshalb sie auch auf ein solches ausgelegt sind. Grundlage dieses insgesamt 4-Schichtigen Modells bildet eine Datenbank Abfrage Ebene (dbQuery - Layer) auf welcher dann die Datenbankabstraktionsschicht mit Datenbank Objekten und Collections aussetzt. In beiden Schichten sollte möglichst keine Programmlogik enthalten sein. Ausnahme bilden hier die virtuellen Eigenschaften, welche in gewisser Weise logische Automatismen abbilden können und sollen.

an image

HowTo Use

Eine Einführung in die Klassen ist derzeit in Arbeit und wird Anfang 2007 veröffentlicht.

Download

Download der Version 1.0 (inkl. Beispieldatenbank und Anwendung)

Download der Version 1.1 (inkl. Beispieldatenbank und Anwendung)

Changelog

2006-06-13 - initial modules created

2006-12-26 - first release of the fully working version 1.0
2007-02-27 - released updated and improved version 1.1
Meine Stimme gegen Nazis! Nazis raus aus dem Internet Stoppt die Vorratsdatenspeicherung! Jetzt klicken und handeln! rsp-blogs.de
Soweit nicht anders angegeben, stehen die Bilder/Texte unter der Creative Commons Attribution Non-Commercial Share Alike Lizenz. Logos gehoeren dem jeweiligen Eigentümer.