Kapitel 12. Propel

"It is a capital mistake to theorize before one has data. Insensibly one begins to twist facts to suit theories, instead of theories to suit facts."

--Sherlock Holmes

Einleitung

Propel ist eine an Apache Torque angelehnte Lösung für die Abbildung von PHP-Klassen in einer relationalen Datenbank. Sie ermöglicht zum einen das Speichern von PHP-Objekten in einer Datenbank und umgekehrt die Kapselung von Datenbankinhalten durch PHP-Objekte. Propel dient hierbei als Brücke zwischen der Datenbank und den PHP-Klassen der eigentlichen Anwendung.

Der Programmierer der Anwendung muss keine SQL-Anfragen direkt an den Datenbankserver richten, da diese von Propel automatisch erzeugt werden. Somit ist bei dem Wechsel von einem Datenbankmanagementsystem zu einem anderen lediglich eine Konfigurationsdatei anzupassen.

Propel besteht aus zwei Komponenten: Mit dem Propel-Generator werden aus einer XML-Spezifikation des Datenmodells die entsprechenden PHP-Klassen sowie eine Datei mit den für die Erzeugung der entsprechenden Datenbank und Tabellen benötigten SQL-Anweisungen erzeugt. Die Propel-Laufzeitumgebung bildet die Grundlage für die Verwendung der durch den Propel-Generator generierten PHP-Klassen.

Propel benötigt neben Creole (siehe Kapitel 11) auch die Pakete PEAR::Log und Phing (PHing Is Not GNU make). Diese sind vor der Installation von Propel zu installieren. Bei Phing handelt es sich um eine PHP-Portierung des in der Java-Welt beliebten Build-Werkzeugs Apache Ant, die für den Propel-Generator benötigt wird.

Abbildung 12.1. Installation von PEAR::Log

pear install --alldeps Log


Abbildung 12.2. Installation von Phing

pear channel-discover pear.phing.info
pear install phing/phing


Abbildung 12.3. Installation von Propel

pear channel-discover pear.phpdb.org
pear install phpdb/propel_generator
pear install phpdb/propel_runtime