Der Service Core_Model
Der Service Core_Model bietet eine einheitliche Schnittstelle für den Zugriff auf jede Form von Resource. Ob es sich um eine Textdatei oder eine Datenbank handelt, ist von "außen" nicht ersichtlich. Core_Model erlaubt sowohl Lese- als auch Schreibzugriff. Ermöglicht wird dies Alles durch das Driver-System.
Das Driver-System
Das Driver-System beruht auf dem Zusammenspiel dreier Teile. Schema des Driver-System
Beginnen wir mit dem Ablauf beim Auslesen von Daten. Hierbei wird der obere Weg "zurückgelegt". Nach einer Anfrage nach einer bestimmten Quelle sucht Core_Model den passenden Driver, um diese Quelle zu verarbeiten. Ein Driver kann - und muss meistens - auf einen oder mehrere sog. Harddriver zurückgreifen. Das Ergebnis gibt Core_Model meist als sog. Driver-Receiver zurück. Ein Driver-Receiver ist ein Container für einen bestimmten Wert, zB. einen Text oder eine Liste.
Soll ein Wert gespeichert werden, wird logischerweise der umgekehrte Weg begangen. Ein Driver-Receiver (mit evtl. vorher manipulierten Inhalt) wird unter Angabe des Quellennamens an Core_Model übergeben. Der Service sucht wieder den passenden Driver und übergibt ihm den Driver-Receiver, dessen Inhalt er ausliest und je nach Notwendigkeit einen Harddriver anweist, ihn zu speichern.
Driver-Receiver
Ein Driver-Receiver ist kaum mehr als ein erweiterter Datentyp. Er zeichnet sich dadurch aus, dass er das Interface Core_DriverReceiverBindings implementiert, dass bestimmte, standardisierte Methoden für den Datenaustausch vorschreibt, sowie einen Konstruktor, der einen Driver als Argument verarbeiten kann.
Prinzipiell besitzt ein Driver-Receiver jedoch keine Kenntnis über die ursprüngliche Quelle der Information, die er enthält.
Driver
Der Driver erhält den logischen Namen einer Quelle (zB. "Core, Config, Parts"), und greift damit auf die Quelle zu. Der Unterschied zwischen den Drivern besteht darin, wie sie das tun. Während der eine Driver einen Pfad generiert und dann eine Datei ausliest, kann ein anderer eine Datenbank-Abfrage starten. Welcher Driver nun für welche Quelle verwendet werden muss, entscheidet ein spezieller Driver - auch Superdriver genannt -, der von Core_Model aufgerufen wird. Dieser Superdriver ist natürlich auch jederzeit austauschbar. Standardmäßig verwendet er Konfigurationsdateien.
Harddriver
Driver können sich der Harddriver bedienen, um eine Quelle auszulesen. Im Unterschied zu Drivern arbeiten Harddriver nicht mehr auf logischer Ebene. Der Harddriver Core_Harddrivers_File erhält also schon den Pfad zu einer Datei als Argument und liefert dem Driver gewünschte Informationen.
Der Driver kann diese dann aufbereiten (indem er zB. aus XML-Daten ein Array erstellt) und ein Driver-Receiver kann diese über eine festgelegte Schnittstelle auslesen.