Nach dem Erscheinen von Zend Framework 1.8 habe ich mir mal Zend_Tool  näher angesehen. Dieser Teil des Frameworks bietet auf Kommandozeilenebene eine Möglichkeit des Rapid Application Development (RAD), was sich laut Wikipedia wie folgt definieren lässt:

Um Softwareentwicklungen flexibler zu gestalten und sich an schnell ändernde Anforderungen anpassen zu können, wurde in den 1980er Jahren u.a. von Barry Boehm die Idee des Rapid Application Development (RAD) entwickelt. Sie sieht ein prototypisches Vorgehen vor, bei dem Anforderungen an eine Software gesammelt und möglichst schnell in ausführbaren Code umgesetzt werden. Dieser wird dem Auftraggeber in einer relativ frühen Phase vorgelegt, um Missverständnisse bei den Anforderungen sowie hinzugekommene Anforderungen zu identifizieren. Die Änderungen werden in einer weiteren Version implementiert und wiederum vorgelegt. Diese Zyklen werden so oft durchlaufen, bis der Auftraggeber mit der Software zufrieden ist und diese abnimmt.

Tatsächlich geht das Aufsetzen eines Projektes mit Hilfe von Zend_Tool deutlich zackiger. In diesem Artikel werde ich das derzeit aktuelle Zend_Framework 1.8.0 verwenden, in den folgenden Versionen von ZF wird da sicher noch mehr möglich sein.

Ich beginne mit dem Aufsetzen von Zend Framework, welches ich über den PEAR-Channel (Beschreibung) bezogen habe. Für alle, die das nicht so leicht machen können: Im regulären Download befindet sich das Kommandozeilentool in bin/ und lautet für Linux/Mac  zf.sh und für Windows  zf.bat. Im folgenden ist diese Datei über “zf” erreichbar, also kann man dieses beispielsweise entsprechend verlinken oder immer den Pfad mit angeben. Schauen wir uns zunächst mal die Version des Zend Framework an:

zf show version

zf show version

zf –help

Jetzt schauen wir uns mal die Hilfe des Zend_Tool an, welche über den folgenden Befehl abgerufen wird:

zf --help

Derzeit sind die folgenden Provider  implementiert, welche sozusagen die Programmteile oder “Fähigkeiten” von Zend_Tool mit verschiedenen Aktionen sind. In den kommenden Versionen von Zend Framework werden diese sicher noch stark erweitert, die wichtigsten sind aber schon vorhanden:

  • Version: zf show version mode[=mini] name-included[=1] Note: There are specialties, use zf show version.? to get specific help on them.
  • Phpinfo: zf show phpinfo
  • Manifest: zf show manifest
  • Profile: zf show profile
  • Project: zf create project path
  • Controller: zf create controller name index-action-included[=1]
  • View: zf create view controller-name action-name-or-simple-name
  • Action: zf create action name controller-name[=index] view-included[=1]
  • ProjectProvider: zf create project-provider name actions

zf invalidactiontodo

Tippt man dagegen mal einen ungültigen Befehl ein, so wird man gleich mit einer aussagekräftigen Fehlernachricht und der Hilfeübersicht “belohnt”:

zf invalidactiontodo

zf create ?

Zu jedem der Befehle gibt es eine Hilfestellung, welche sich einfach abrufen lässt. Im Beispiel habe ich für die Aktion create alle Provider suchen lassen:

zf create ?

Die Ausgabe ist im Bild zu sehen, es wird ein Hilfetext zu jedem gefundenen Provider ausgegeben, welcher die Aktion “create” enthält.

zf create wolfuli: Ergebnis

Erstellen wir doch mal ein Beispielprojekt. Hierzu wechsle ich ins gewünschte Verzeichnis, wo ich ein Projekt im Ordner wolfuli anlegen möchte, bei mir ist das auf meinem Linux-System der Ordner /home/uli/. Das Ergebnis nach Eingabe des untenstehenden Befehls ist im rechten Bild zu sehen. Während der Initialisierung des Projektes wird bereits der IndexController sowie die entsprechende View angelegt.

zf create project wolfuli

zf create project wolfuli

zf create controller foo

Jetzt würde ich gerne einen neuen Controller namens “foo” hinzufügen. Dazu muss man in das Projektverzeichnis wechseln, welches sich nun unter /home/uli/wolfuli/ befindet (wichtiger Schritt, sonst gehts nicht!). Anschließend wird der Controller per Kommando erstellt:

1
2
cd /home/uli/wolfuli/
zf create controller foo

Bei dieser Aktion wird der Controller FooController erstellt. Gleichzeitig wird ein passendes ViewScript für die gleichzeitig erstellte IndexAction erzeugt. Desweiteren wird ein Test aufgesetzt, welcher nach Editierung per phpUnit geprüft werden könnte (es sind aber nicht gleich Tests dafür vorhanden, das würde auch keinen Sinn machen). Die Anzeige des Controllers foo im Browser zeigt folgendes:

zf create controller foo: Ergebnis

Im FooController soll nun eine BarAction angelegt werden, was ebenfalls ganz einfach geht und wie immer die dazugehörigen ViewScripts erstellt:

zf create action bar foo

zf show profile

Der Befehl:

zf show profile

gibt übrigens die Ausgabe im Bild aus. Es zeigt die formale Projektstruktur des aktuellen Projekts.

Ich bin mal gespannt, was in den kommenden Versionen von Zend_Tool noch kommt. Module-Support  habe ich in r15386 des Zend-SVN schon gesehen, mal schauen, ob es für 1.8.1 schon in Frage kommt :)