Programmer's Reference Guide
| Zend_Controller Schnellstart |
Zend_Controller Grundlagen
Das Zend_Controller System wurde leichtgewichtig, modular und erweiterbar
aufgebaut. Das Design ist einfach, um den Benutzern viel Flexibilität und Freiheiten zu
ermöglichen. Dennoch bietet es ausreichend Struktur, damit Systeme, die auf den
Zend_Controller aufbauen, gemeinsame Konventionen befolgen und einen
ähnlichen Code Aufbau verwenden.
Das folgende Diagramm zeigt den Workflow und der folgende Texte beschreibt das Zusammenspiel im Detail:

Der Zend_Controller Ablauf wurde mit Hilfe verschiedener Komponenten
implementiert. Während es für die Benutzung des Systems nicht notwendig ist, den
kompletten Unterbau all dieser Komponenten zu verstehen, ist es hilfreich, über den
Ablauf ausreichend Kenntnisse zu haben.
-
Zend_Controller_Frontsteuert den gesamten Ablauf desZend_ControllerSystems. Es ist eine Interpretation des FrontController Entwurfsmusters.Zend_Controller_Frontverarbeitet alle Anfragen, die der Server erhält, und ist letztendlich dafür verantwortlich, die Anfragen an die ActionController (Zend_Controller_Action) zu deligieren. -
Zend_Controller_Request_Abstract(oft als dasRequest Objektbezeichnet) repräsentiert die Umgebung der Anfrage und stellt Methoden für das Setzen und Abfragen der Namen für Controller und Aktion sowie jeder Anfrageparameter bereit. Zusätzlich behält es die Übersicht darüber, ob die enthaltene Aktion vonZend_Controller_Dispatcherverarbeitet wurde oder nicht. Erweiterungen dieses abstrakten Request Objektes können verwendet werden, um die gesamte Anfrageumgebung zu kapseln und Routern zu erlauben, Informationen aus der Anfrageumgebung abzufragen, um die Namen für Controller und Aktion zu setzen..Standardmäßig wird
Zend_Controller_Request_Httpverwendet, welches den Zugriff auf die komplette HTTP Anfrageumgebung ermöglicht. -
Zend_Controller_Router_Interfacewird verwendet, um Router zu definieren. Routing ist der Prozess, bei dem die Anfrageumgebung untersucht wird, um zu ermitteln, welcher Controller und welche Aktion dieses Controllers diese Anfrage verarbeiten soll. Dieser Controller, diese Aktion und optionale Parameter werden dann im Request Object gesetzt, das vomZend_Controller_Dispatcher_Standardverarbeitet wird. Das Routing wird nur einmal ausgeführt: wenn die Anfrage erhalten wird und bevor der erste Controller aufgerufen wird.Der Standardrouter
Zend_Controller_Router_Rewritenimmt den URI Endpunkt entgegen, der inZend_Controller_Request_Httpangegeben ist, und zerlegt ihn in einen Controller, eine Aktion und die Parameter basierend auf den Pfadinformationen der URL. Zum Beispiel würde die URLhttp://localhost/foo/bar/key/valueübersetzt, um denfooController und diebarAktion zu verwenden und einen Parameterkeymit dem Wertvalueanzugeben.Zend_Controller_Router_Rewritekann auch für beliebige Pfade verwendet werden; man beachte die Rewrite Router Dokumentation für weitere Informationen. -
Zend_Controller_Dispatcher_Interfacewird verwendet, um Dispatcher zu definieren. Dispatching ist der Prozess, den Controller und die Aktion aus dem Request Objekt abzufragen und auf eine Controller Datei/ Klasse und eine Aktionsmethode in dieser Controller Klasse zu abzubilden. Wenn der Controller oder die Aktion nicht existieren, ermittelt es den zu verarbeitenden Standard Controller und Aktion.Der aktuelle Dispatcher Prozess besteht aus dem Instanzieren der Controller Klasse und dem Aufrufen der Aktionsmethode in dieser Klasse. Anders als das Routing, welches immer nur einmal vorkommt, erfolgt das Dispatching in einer Schleife. Wenn der Verarbeitungsstatus des Request Objektes irgendwann zurück gesetzt wird, wird die Schleife wiederholt und die Aktion aufgerufen, die zu diesem Zeitpunkt im Request Objekt gesetzt ist. Das erste Mal, wenn ein Schleifendurchlauf mit gesetztem Verarbeitungsstatus (boolsches true) im Request Objekt beendet wird, wird der Prozess beendet.
Der Standarddispatcher ist
Zend_Controller_Dispatcher_Standard. Er definiert Controller als MixedCasedKlassen, die auf das Wort Controller enden, und Aktionsmethoden als camelCasedMethoden, die auf das Wort Action enden:SomeFooController::barAction. In diesem Fall wird auf den Controller übersomefoound auf die Aktion überbarzugegriffen.Hinweis: Konventionen von Namens-Schreibweisen
Da Menschen grundsätzlich inkonsistent sind im Behandeln und der Gründlichkeit beim Tippen von Links, normalisiert Zend Framework die Pfad Informationen zur Kleinschreibung. Das beeinflut natürlich wie Kontroller und Aktionen benannt werden ... oder wie auf diese in Links referiert werden kann.
Wenn es gewünscht ist das die eigene Kontrollerklasse oder Aktionsmethodenname mehrfache MixedCasedWörter oder camelCasedWörter enthält, dann müssen diese zu getrennten Wörtern in der URL seperiert werden, entweder mit einem '-' oder '.' (das zu verwendende Zeichen kann konfiguriert werden).
Als Beispiel, wenn man zur Aktion inFooBarController::bazBatAction()kommen will, muß zu Ihr mit der URL as/foo-bar/baz-batoder/foo.bar/baz.batreferiert werden.
-
Zend_Controller_Actionist die elementare Controller Komponente. Jeder Controller ist eine einzelne Klasse, welche dieZend_Controller_ActionKlasse erweitert und Methoden für die Aktionen enthält. -
Zend_Controller_Response_Abstractdefiniert eine grundlegende Response Klasse, um Antworten der Aktion aus den Controllern zu sammeln und zurück zu geben. Es sammelt sowohl Header als auch Inhalte.Die Standard Response Klasse ist
Zend_Controller_Response_Http, welches in einer HTTP Umgebung verwendet werden kann.
Der Ablauf vom Zend_Controller ist relativ einfach. Eine Anfrage wird vom
Zend_Controller_Front empfangen, der wiederum
Zend_Controller_Router_Rewrite aufruft, um zu ermitteln, welcher Controller
(und welche Aktion in dem Controller) ausgeführt werden soll.
Zend_Controller_Router_Rewrite zerteilt die URI um den Namen des Controllers
und der Aktion für den Request zu setzen. Zend_Controller_Front durchläuft
dann eine Dispatcher Schleife. Er ruft Zend_Controller_Dispatcher_Standard
auf und übergibt den Request, um den Controller und die Aktion auszuführen, die im Request
spezifiziert wurden (oder verwendet die Standardwerte). Wenn der Controller fertig ist,
wird die Kontrolle wieder an Zend_Controller_Front übergeben. Wenn der
Controller durch das Zurücksetzen des Dispatch Status des Requests angezeigt hat, dass
ein weiterer Controller ausgeführt werden soll, wird der Durchlauf fortgesetzt und ein
weiterer Dispatcher Prozess wird durchlaufen. Andernfalls endet der Prozess.
| Zend_Controller Schnellstart |
Select a Version
Languages Available
Components
Search the Manual
Navigation
- Programmierer Referenzhandbuch
- Programmierer Referenzhandbuch
- Zend_Controller
- Zend_Controller Schnellstart
- Zend_Controller Grundlagen
- Der Front Controller
- Das Request Objekt
- Der Standard Router
- Der Dispatcher
- Action Kontroller
- Action Helfer
- Das Response Objekt
- Plugins
- Eine konventionelle modulare Verzeichnis Struktur verwenden
- MVC Ausnahmen
- Migration von vorhergehenden Versionen
