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_Front steuert den gesamten Ablauf des
                    Zend_Controller Systems. Es ist eine Interpretation des 
                    FrontController Entwurfsmusters. Zend_Controller_Front
                    verarbeitet 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 das Request 
                    Objekt bezeichnet) 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 von 
                    Zend_Controller_Dispatcher verarbeitet 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_Http verwendet,
                    welches den Zugriff auf die komplette HTTP Anfrageumgebung ermöglicht.
                
				    Zend_Controller_Router_Interface wird 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 vom 
				    Zend_Controller_Dispatcher_Standard verarbeitet 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_Rewrite nimmt den 
                    URI Endpunkt entgegen, der in Zend_Controller_Request_Http 
                    angegeben ist, und zerlegt ihn in einen Controller, eine Aktion und die
                    Parameter basierend auf den Pfadinformationen der URL. Zum Beispiel würde
                    die URL http://localhost/foo/bar/key/value übersetzt, um den 
                    foo Controller und die bar Aktion zu verwenden und
                    einen Parameter key mit dem Wert value anzugeben.
                
                    Zend_Controller_Router_Rewrite kann auch für beliebige Pfade 
                    verwendet werden; man beachte die 
                    Rewrite Router Dokumentation für weitere Informationen.
                
                    Zend_Controller_Dispatcher_Interface wird 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 CamelCasedClasses, die auf das Wort Controller 
                    enden, und Aktionsmethoden als camelCasedMethods, die auf das Wort Action 
                    enden: SomeFooController::barAction. In diesem Fall wird auf
                    den Controller über somefoo und auf die Aktion über 
                    bar zugegriffen.
                
					Zend_Controller_Action ist die elementare Controller 
					Komponente. Jeder Controller ist eine einzelne Klasse, welche die  
					Zend_Controller_Action Klasse erweitert und Methoden für die
					Aktionen enthält. 
				
                    Zend_Controller_Response_Abstract definiert 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.