Mehrere Versionen vom Zend Framework parallel nutzen
Donnerstag, 29.10.2009Viele kennen sicherlich das Problem. Wenn man einmal mit dem Zend Framework in einem Projekt gearbeitet hat, möchte man dies auch gerne in anderen Projekten nutzen. Meistens beginnt es dann damit, dass man die Library Dateien ins neue Projektverzeichnis kopiert. Nach und nach wächst der Pool an Projekten, welche das Zend Framework nutzen. Und irgendwann kommt man an den Punkt, wo eines der Projekte ein neues Zend Framework Release nutzen möchte oder muss. Danach wird ein anderes Projekt auf eine neue Version portiert und ehe man sich versieht, hat man 23 Projekte zu pflegen, die 5 verschiedene Zend Framework Releases verwenden. Und es ist zudem einfach nicht die Zeit da (oder sie wird vom Kunden nicht bezahlt), alle Projekte immer auf dem selben Release aktuell zu halten.
Für dieses Problem halte ich die Installationen der Zend Framework Dateien immer getrennt von den eigentlichen Projekten. Ich arbeite mit Ubuntu Linux und da ist dies sehr einfach zu handhaben. Dafür halte ich ein Verzeichnis vor, in dem alle Releases, die verwendet werden, installiert werden. Dieses Verzeichnis lautet bei mir z.B. /home/devhost/ZendFramework und enthält folgende Verzeichnisse:
- /home/devhost/ZendFramework/ZendFramework-1.7.4
- library
- /home/devhost/ZendFramework/ZendFramework-1.8.4PL1
- bin
- library
- /home/devhost/ZendFramework/ZendFramework-1.9.5
- bin
- library
Um Zend_Tool nutzen zu können (soweit es in dem Release schon vorhanden ist), wird für jedes Release ein eigener symbolischer Link erstellt. Würde ich nur die neueste Version von Zend_Tool nutzen, könnte dies in älteren Projekten zu Problemen führen, weil Zend_Tool Komponenten nutzen könnte, die in dieser alten Version noch nicht existierten. Das Problem, der Bugs bei Zend_Tool in den verschiedenen Versionen, nehme ich dabei in Kauf:
-
sudo ln -s /home/devhost/ZendFramework/ZendFramework-1.9.5/bin/zf.sh /usr/bin/zf-1-9-5
-
sudo ln -s /home/devhost/ZendFramework/ZendFramework-1.8.4Pl1/bin/zf.sh /usr/bin/zf-1-8-4
Ob dies erfolgreich war, lässt sich durch folgende Aufrufe testen. Dabei sollte die Hilfe von Zend_Tool mit Angabe der Versionsnummer ausgegeben werden.
-
zf-1-8-4
-
zf-1-9-5
Um ein neues Projekt zu erstellen, rufe ich zuerst Zend_Tool für die entsprechende Zend Framework Version auf und erstelle damit ein neues Projekt. Danach wechsele ich in das neue Projektverzeichnis und erstelle einen symbolischen Link zur Library der gewünschten Zend Framework Version.
-
zf-1-9-5 create project /home/devhost/Test_Ralf
-
sudo ln -s /home/devhost/ZendFramework/ZendFramework-1.9.5/library/Zend/ /home/devhost/Test_Ralf/library/Zend
Danach existiert unter /home/devhost/Test_Ralf/library/ das Verzeichnis /Zend, das auf /home/devhost/ZendFramework/ZendFramework-1.9.5/library/Zend/ verweist. Nun kann ich ganz normal mit den Zend Framework Dateien arbeiten. Bei späteren Updates, muss ich dann darauf achten, dass ich die richtige Version von Zend_Tool verwende, bzw. das nach dem Anlegen von Controllern und Views keine Probleme auftauchen. Alternativ könnte ich auch symbolische Links im Projektverzeichnis zu den jeweiligen Versionen von Zend_Tool erstellen, dann muss ich da später nicht mehr daran denken.
Der Vorteil bei dieser Vorgehensweise ist, dass ich bei einem neuen Zend Framework Release mal eben schnell den symbolischen Link umbiege, meine Unit-Tests durchlaufen lasse und bei größeren Problemen wieder einfach auf die vorher genutzte Version zurück schalten kann.
Bin für Kommentare, Verbesserungsvorschläge und Hinweise, dass dies alles viel besser geht, sehr dankbar. :-)
