Skip to content
Caution: You are browsing the legacy symfony 1.x part of this website.

Propel 1.3 Anleitung

Symfony version
Language

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. Ändere config/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 von config/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.