© saicle/Shutterstock.com
lmbObject - Objektorientierung in Limbas

Limbas im Einsatz


Unter Entwicklern kommt es immer wieder zum Streit bei der Frage, was besser sei: Prozedurales Programmieren oder doch lieber objektorientiert? Limbas, ein in PHP geschriebenes Open-Source-Framework zur Erstellung von individuellen Datenbankanwendungen, stellt beides zur Verfügung.

Mit dem neuen API lmbObject ist ein objektorientierter Zugriff auf die gespeicherten Daten über die SOAP-Schnittstelle möglich – mit allen Vorteilen, die die Objektorientierung bietet. Im folgenden Artikel werden das API erläutert und beispielhaft dessen Einsatzmöglichkeiten gezeigt.

Was bietet das neue API?

Das objektorientierte Entwickeln bietet viele Vorteile, etwa, dass Daten und Funktionen dabei eng mit einem Objekt zusammengefasst werden. Das neue API bietet die Möglichkeit, eine Datenbanktabelle als Objekt zurückzugeben und darauf verschiedene Methoden auszuführen. Ebenso wird verhindert, dass Methoden fremder Objekte die Daten manipulieren. Durch den folgenden Aufruf wird ein Objekt Kunde mit den Attributen ID, Name und Namenszusatz kreiert: $lrKunde = LimbasRecord::model('KUNDEN', array('ID', 'NAME', 'NAME_ZUSATZ'));. Allgemein lautet der Aufruf: $object = LimbasRecord::model($tableName, $attributes=null);.

Zurückgegeben wird eine statische Instanz der genannten LimbasRecord-Klasse. Im obigen Beispiel ist das die Tabelle Kunden, an der anschließend die Klassenmethoden aufgerufen werden können. An einer solchen Objektinstanz können nun Methoden ausgeführt, mit diesem Objekt verknüpfte Objekte zurückgegeben oder neue Objekte abgeleitet werden. Werden die Kontakte eines Kunden benötigt, öffnet man zuerst das Objekt Kunden mit den Attributen ID und Kontakte. Mithilfe der Funktion findById() holt man sich den gewünschten Kunden und über ihn anschließend die Kontakte:

$lrKunde = LimbasRecord::model('KUNDEN', array('ID', 'Kontakte')); $kunde = $lrKunde->findById(1); $relation = $kunde->KONTAKTE();

Darüber hinaus lassen sich Logging-Protokolle erstellen. Dabei können die Ausgaben als einfache Logging-Strings zurückgegeben, die Logging-Strings in eine Datei ausgegeben oder als Webausgabe aufbereitet werden. Um sich während der Entwicklung ein Objekt einfach anzeigen zu lassen, kann es mittels echo (echo $kunde;) als HTML-Tabelle ausgegeben werden (Abb. 1).

zimmermann_limbas_1.tif_fmt1.jpgAbb. 1: Darstellung der „echo“-Ausgabe für Objekte

Der Sourcecode des API findet sich im Verzeichnis / limbas_src/extra/lmbObject/. Er ist in drei Packages eingeteilt:

  • base: Enthält die abstrakte Klasse LimbasComponent, in der einige der magischen Methoden behandelt werden, sowie die Klasse LimbasException.

  • db: Beinhaltet die Klassen LimbasRecord und LimbasRelation, die beide von der Klasse LimbasComponent erben, und die Klasse LimbasRecordException, die von der Klasse LimbasException erbt. Bei der Klasse LimbasRecord handelt es sich um die Schnittstelle zur Datenbank; die Klasse LimbasRelation stellt die Verknüpfung zwischen zwei Datenbanktabellen dar.

  • Log: Umfasst das Interface LimbasLogRoute, die Klassen LimbasPlainLogRoute, LimbasWebLog­Route und LimbasFileLogRoute, die das Interface LimbasLogRoute implementieren und die Logeinträge entweder „unbehandelt“ ausgeben, für das Web aufbereiten oder in eine Datei speichern, und die Klasse LimbasLogger, in der die einzelnen Logging-Einträge gesammelt werden.

Die wichtigsten Methoden von „LimbasRecord“

Was wäre eine Klasse ohne die dazugehörigen Methoden, um auf eine Limbas-Tabelle zuzugreifen? Im Folgenden werden die wichtigsten Methoden der Klasse LimbasRecord beschrieben, die für die Verwendung in einer Erweiterung möglich sind.

Die zentrale Methode der Klasse LimbasRecord ist public static function model($tableName, $attributes=null), die ein statisches Modell der genannten Limbas-Tabelle zurückgibt. An dieser statischen Klasseninstanz können anschließend die Klassenmethoden aufgerufen werden. Als Parameter werden der Tabellenname und die zu verwendenden Attribute benötigt. Werden keine Attribute definiert ($attributes=null), sind automatisch alle Felder der angegebenen Tabelle nutzbar. ...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang