Zend_Tool steckt immer noch in den Kinderschuhen

Dienstag, 01.06.2010

Zend_Tool ist bereits seit dem Release 1.8 im Zend Framework dabei. Meine praktischen Erfahrungen damit sind bisher jedoch eher durchwachsen. Das liegt vor allem an den vielen kleinen und größeren Bugs sowie an der immer noch eher eingeschränkten Funktionalität. In Rahmen zweier Zend Framework Schulungen, die ich kürzlich gehalten habe, habe ich mich auch wieder intensiver mit Zend_Tool auseinander gesetzt.

Mein Fazit zu der Komponente bis zum Stand 1.10.5: man kann sie ganz gut verwenden, um den Grundaufbau einer neuen Zend Framework Anwendung zu erstellen. Dafür sollte man sich im Vorfeld darüber Gedanken machen, welche Module, Controller, Actions, Formulare, Modelklassen, Db-Tables, usw. man braucht. Diese kann man dann prima als Gerüst mit Zend_Tool aufbauen, um alle Dateien und Verzeichnisse dort zu haben, wo sie standardmäßig hingehören. Danach sollte man Zend_Tool für die Pflege des Projektes aber erst einmal vergessen.

Hier eine unvollständige Liste der Bugs und fehlenden Funktionen, die mich an Zend_Tool stören. Für die meisten gibt es im Issue Tracker sogar bereits passende Bugs, doch ich habe nun nicht alle passend heraus gesucht. Man möge mir verzeihen.

  • Beim Anlegen eines Moduls wird das Module Directory im Front-Controller nicht in der application.ini konfiguriert.
  • Beim Anlegen eines Moduls wird keine Bootstrap für dieses Modul erstellt, so dass das Autoloading für dieses Modul nicht funktioniert.
  • Beim Anlegen eines Moduls muss dieses komplett in Kleinbuchstaben angegeben werden. Legt man nun für dieses Modul ein Model oder ein Formular etc. an, beginnt der Klassenname mit einem Kleinbuchstaben, also statt Shop_Model_Cart heißt die Klasse shop_Model_Cart.
  • Sämtliche Klassen werden ohne PHPDoc Blöcke angelegt. Diese muss man dann selber für alle Klassen und Methoden von Hand anlegen.
  • Man kann keine Controller, Aktionen, View-Skripte usw. mit Zend_Tool löschen und muss diese Änderungen von Hand übernehmen, sowohl für die eigentlichen Dateien als auch in der .zfproject.xml
  • Hat man in einem Action Controller bereits etwas Code drin, kann es passieren, dass dieser zerschossen wird, wenn man weitere Aktionen hinzufügt. Neben Leerzeilen und Tabs, die ärgerlich sind, wird auch mal ein schließendes } vergessen oder dazu gepackt.
  • Man kann zwar Modelklassen (und DbTables) erstellen, aber keine Datamapper und Services, obwohl die Verzeichnisse eigentlich konfiguriert werden. So muss man beim ersten Projekt erst einmal schauen, wo denn Datamapper und Service Klassen (nicht Webservices) hin kommen und wie die Klassen genau heißen. Gerade für Einsteiger etwas doof.
  • Mal wird bei der Angabe des Controllers der erste Buchstabe automatisch vergrößert, mal aber auch nicht. So kann man einen Controller shop anlegen, diesen muss man dann aber bei erneuter Verwendung (z.B. Anlegen einer Aktion) mit Shop angeben. Das ist irgendwie inkonsistent.

Ok, genug des Nörgelns. Da sich diese Probleme leider nicht von alleine lösen, bin ich am Wochenende in einem ersten Schritt einmal alle Issues für Zend_Tool durchgegangen und habe geschaut, welche voraussichtlich bereits erledigt sind und welche es doppelt gibt. Dadurch wird die aktuelle Liste von 80 Issues etwas kleiner (wenn Ralph Schindler meinen Anmerkungen folgt und ein paar Issues schließt). Vielleicht finde ich ab und an mal Zeit, den einen oder anderen Bug zu fixen, dann kann sich die Komponente langsam erholt. Vielleicht fühlt sich ja auch jemand der Leser dieses Beitrags dazu ermuntert, bei Zend_Tool einmal unterstützend in die Entwicklung einzugreifen?

Denn eines ist wohl klar: diese Komponente wird in den nächsten Monaten wohl weniger Entwicklerzeit angediehen bekommen, da der Fokus zum Teil jetzt schon auf dem Zend Framework 2.0 Release liegt.

Tweet this via redir.ec

Mehrere Versionen vom Zend Framework parallel nutzen

Donnerstag, 29.10.2009

Viele 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:

CODE:
  1. sudo ln -s /home/devhost/ZendFramework/ZendFramework-1.9.5/bin/zf.sh /usr/bin/zf-1-9-5
  2. 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.

CODE:
  1. zf-1-8-4
  2. 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.

CODE:
  1. zf-1-9-5 create project /home/devhost/Test_Ralf
  2. 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. :-)

Tweet this via redir.ec

Zend Framework auf Debian installieren und Zend_Tool nutzen

Dienstag, 13.10.2009

Zwei kleine, Kommandozeilen fokussierte Tutorials bietet Samuel Weber auf seinem Blog an. Der erste Beitrag erläutert die Installation vom Zend Framework auf Debian Linux. Un im zweiten Teil geht es darum, mit Zend_Tool ein neues Zend Framework Projekt anzulegen. Wie erwähnt liegt der Fokus hierbei auf der Kommandozeile. Da das Blog von Samuel noch sehr frisch ist, bin ich schon gespannt, was noch so folgen wird.

Tweet this via redir.ec


Better Tag Cloud