Bibliotheken
Bei der Entwicklung dieser Software habe ich verschiedene Bibliotheken und Werkzeuge verwendet. Als Gesamtframework
kommt Symfony zum Einsatz. Zur Verbindung zwischen Symfony und
der Datenbank verwende ich Propel.
Symfony
Symfony habe ich mit den folgenden Schritten eingerichtet:
Propel
Zur Verbindung mit der Datenbank kann unter Symfony Doctrine und Propel verwendet werden. Standardmäßig wird Doctrine
unterstützt. Ich habe mich allerdings gegen Doctrine und für Propel entschieden, da bei den Vergleichen der beiden
keiner als klarer Sieger hervorgeht (es sieht eher nach einem Glaubenskrieg aus). Einer der Vorteile von Propel ist
die bessere Unterstützung durch Entwicklungsumgebungen, insbesondere eine funktionierende Autovervollständigung.
Außerdem wird bei den Vergleichen oft geschrieben, dass es einfacher ist, Propel zu lernen, weil weniger "Magisches
hinter den Kulissen" abläuft. Daher habe ich entschieden, Propel einzusetzen.
Werkzeuge
Eclipse
Diese gesamte Software wurde unter Eclipse PDT entwickelt.
Datenbankmodellierung
Die Datenbank habe ich mit dem graphischen Werkzeug MySQL Workbench entwickelt.
Konvertierung der Datenbank nach Propel
Propel setzt auf eine XML-Datei als Beschreibung der Datenbank. Aus dieser Datei werden sowohl die SQL-Befehle zum
Erzeugen der Datenbank als auch die PHP-Objekte erzeugt. Die Datei kann von Hand erstellt werden, jedoch ist es
einfacher und weniger fehlerträchtig diese automatisch aus der MySQL Workbench Datei zu erzeugen. Hierfür verwende ich
den
mysql-workbench-schema-exporter.
Mit den folgenden Befehlen kann die Workbench-Datei in das Propel-Schema exportiert werden:
php cli/export.php --export=propel1-xml --saveconfig database.mwb
Jetzt in der export.json den Eintrag "addVendor" auf true gesetzt werden. Damit wird der Tabellentyp innoDB aus der
WorkBench-Datei übernommen.
php cli/export.php --export=propel1-xml --saveconfig database.mwb
Die Datei export.json muss vorher einmal
Dies erzeugt die Datei vereniging.schema.xml, die von Propel eingelesen werden kann. Bevor Propel diese Datei
verwenden kann, müssen allerdings noch ein paar Sachen geändert werden:
- in der Zeile <database ... muss die Eigenschaft name="vereniging"
umbenannt werden in name="default". (anscheinend gibt es noch ein Fehler in Symfony, wodurch
der hier angegebene Name nicht für die Datenbank gilt, sondern für den Verbindungsnamen zur Datenbank, der "default"
lautet wenn kein anderer Name angegeben ist).
- in der Zeile <database ... muss der Eintrag
namespace="Vereniging\BaseBundle\Model" eingefügt werden. (damit werden die
php-Objektdateien in das richtige Verzeichnis abgelegt)
- alle Einträge namespace="" müssen gelöscht werden. (damit gilt der oben angegebe
Namensraum)
- Der Eintrag "'m'" muss durch "m" ersetzt werden. (sonst wird
in der SQL-Datei ein illegaler Standardwert eingetragen)
- Hinter jeder Zeile <database ... muss eine Zeile <vendor type="mysql"><parameter name="Engine" value="InnoDB"/></vendor> eingefügt werden.
|