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
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
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
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.
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
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:
|
|
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:
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
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 :)