von Carl Vondrick - Übersetzung Fabian Lange
Dank der Entkopplung von symfony 1.1 und Propel ist es nun sehr einfach geworden Propel 1.3 in symfony Projekten einzusetzen. Propel 1.3 bring im Vergleich zu 1.2 eine wesentlich bessere Geschwindigkeit, eine native Nested Set Implementierung für leiches Ablegen von Bäumen, Object Instance Pooling und vieles mehr. Insbesondere die bessere Performance von Propel 1.3 ist auf PDO zurückzuführen, welches anstelle von Creole als Databankabstraktionsschicht eingesetzt wird.
Die Installation von Propel 1.3 dauert nur wenige Minuten. Es muss nur das entsprechene Plugin installiert und zwei Konfigurationsdateien geändert werden:
Das Propel 1.3 Plugin aus dem symfony Repository installieren:
$ cd /path/to/project/root/ $ svn co http://svn.symfony-project.com/plugins/sfPropelPlugin/branches/1.3/ plugins/sfPropelPlugin
Propel 1.3 benutzt ein neues Format für die Datenbankverbindung. Die
databases.yml
muss entsprechend angepasst werden. Ändereconfig/databases.yml
so, dass sie der Folgenden mit den notwendigen projektspezifischen Änderungen entspricht:dev: propel: param: classname: DebugPDO all: propel: class: sfPropelDatabase param: dsn: mysql:dbname=mydb;host=localhost username: Benutzername password: Passwort encoding: utf8 persistent: true pooling: false classname: PropelPDO
Das PDO Handbuch enthält weitere Informationen zu dem Aufbau der DSN.
Die Datei
propel.ini
muss ebenfalls aktualisiert werden um dieser Konfiguration zu entsprechen. Ersetze die folgenden 3 Zeilen am Anfang vonconfig/propel.ini
:propel.database = mysql propel.database.createUrl = mysql://root@localhost/ propel.database.url = mysql://root@localhost/myproject
Und ersetze sie durch:
propel.database = mysql propel.database.driver = mysql propel.database.createUrl = mysql://localhost/ propel.database.url = mysql:dbname=mydb;host=localhost propel.database.user = Benutzername propel.database.password = Passwort propel.database.encoding = utf8
Wobei
propel.database.url
der DSN aus Schritt 2 entsprechen muss.Lösche symfony's internen Cache mit:
$ symfony cache:clear
Da Propel 1.3 ein verbessertes Objektmodell hat muss das
model
ebenfalls neu erstellt werden:$ symfony propel:build-model
Wenn dies ein neues Projekt sein sollte sind wir hier schon fertig und Propel 1.3 ist fertig installiert! Die schema.yml
Syntax ist genau die gleiche wie in Propel 1.2. Die neue API ist nicht viel anders; genaugenommen ist die API in den meisten Teilen identisch.
Wenn ein bereits existierendes Projekt mit Propel 1.3 aktualisiert werden soll, kann noch etwas Anpassungsarbeit erforderlich sein, allerdings sollten große Teile des Projekts bereits jetzt funktionieren. Wenn Transaktionen oder Creole direkt vom Projektcode benutzt werden, müssen diese Stellen manuell auf PDO Code umgeschrieben werden. Auf den Webseiten des Propel Projektes gibt es hilfreiche Upgrade Anleitungen welche durch den Upgradeprozess führen. Auch wenn das Projekt ein neues Projekt sein sollte oder es keine Probleme geben sollte, bieten die Propel Seiten einen guten Überblick über die neuen Features.
symfony 1.1 entkoppelt seine Kernkomponenten, so dass es nicht leichter sein kann ein ORM nach Wahl zu benutzen. Falls Propel nicht überzeugen sollte steht das sfDoctrinePlugin, eine Alternative zu Propel mit ähnlicher Performance und Features wie Propel 1.3, zum Ausprobieren bereit. Dank symfony 1.1 können Entwickler zwischen Propel 1.3 für Features und Performance oder Propel 1.2 für Absolute Stabilität, oder einem ganz anderen ORM, wählen.
This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.