Erstellen von Providern für die Verwendung mit Zend_Tool_Framework Generell ist ein Provider für sich selbst nichts mehr als die Shell für einen Entwickler um einige Fähigkeiten zu bündeln die man mit dem Kommandozeilen (oder einem anderen) Client ausliefern will. Das ist analog zu dem was ein "Controller" in einer MVC Anwendung ist. Grundsätzliche Anweisungen für die Erstellung von Providern Wenn, als Beispiel, ein Entwickler die Fähigkeit hinzufügen will, die Version einer Datendatei anzuzeigen, mit der seine 3rd Party Komponente arbeitet, gibt es nur eine Klasse die der Entwickler implementieren muss. Angenommen die Komponente heisst My_Component, dann würde er eine Klasse erstellen die My_Component_HelloProvider heisst und in einer Datei ist die HelloProvider.php heisst und irgendwo im include_path ist. Diese Klasse würde Zend_Tool_Framework_Provider_Interface implementieren, und der Body dieser Datei würde nur wie folgt auszusehen haben: Durch den obigen Code, und der Annahme das der Entwickler den Zugriff auf diese funktionalität über den Consolen Client will, würde der Aufruf wie folgt aussehen: Fortgeschrittene Informationen für die Entwicklung Das obige "Hello World" Beispiel ist perfekt für einfache Kommandos, aber was ist mit etwas fortgeschrittenerem? Wenn das Scripting und Tooling wächst, kann die Notwendigkeit entstehen Variablen zu akzeptieren. So wie Signaturen von Funktionen Parameter haben, kann eine Tooling Anfrage auch Parameter akzeptieren. So wie jede Tooling Anfrage in einer Methode in einer Klasse isoliert werden kann, können die Parameter einer Tooling Anfrage auch in einem sehr bekannten Platz isoliert werden. Parameter von Action Methoden eines Providers können die selben Parameter enthalten die man im Client verwenden will, wenn man den Namen im obigen Beispiel akzeptieren will, und man würde das in OO Code warscheinlich wie folgt tun: Das obige Beispiel kann pber di Kommandozeile wie folgt aufgerufen werden: zf say hello Joe. "Joe" wird dem Provider als Parameter des Methodenaufrufs zur Verfügung gestellt. Es ist auch zu beachten das der Parameter optional ist, was bedeutet das er auch auf der Kommandozeile optional ist, so das zf say hello weiterhin funktioniert, und der Standardname "Ralph" ist. Ein anderes interessantes Feature das man implementieren kann ist Voranstellbarkeit. Voranstellbarkeit ist die Fähigkeit des Providers "Voranzustellen" wie wenn er die angefragte Aktion und Provider Kombination ausführt, und dem Benutzer so viel Information wie möglich darüber gibt was er tun würde ohne es wirklich zu tun. Das kann eine wichtige Option sein wenn viele Datenbank oder Dateisystem Änderungen durchzuführen sind, die der Benutzer andernfalls nicht tun würde. Voranstellbarkeit ist einfach zu implementieren. Es gibt zwei Teile dieses Features: 1) Markieren des Providers, das er die Fähigkeit des "voranstellens" hat und 2) prüfen der Anfrage um Sicherzustellen das die aktuelle Anfrage wirklich das "voranstellen" angefragt hat. Dieses Feature wird im nächsten Code Beispiel demonstriert. _registry->getRequest()->isPretend()) { echo 'Ich würde zu ' . $name . ' hallo sagen.'; } else { echo 'Hallo' . $name . ', von meinem Provider!'; } } } ]]>