Zend Framework - Controller

Wie bereits erwähnt, ist die controllerspielt eine wichtige Rolle im Zend MVC Framework. Alle Webseiten in einer Anwendung müssen von einem Controller verwaltet werden.

Im Zend MVC Framework sind Controller Objekte, die das - Zend / Stdlib / DispatchableInterface implementieren. DasDispatchableInterface hat eine einzige Methode, dispatch, das bekommt die Request Objekt als Eingabe, etwas Logik ausführen und zurückgeben Response ein Objekt als Ausgabe.

dispatch(Request $request, Response $response = null)

Ein einfaches Beispiel für ein Controller-Objekt zur Rückgabe von "Hello World" lautet wie folgt:

use Zend\Stdlib\DispatchableInterface; 
use Zend\Stdlib\RequestInterface as Request; 
use Zend\Stdlib\ResponseInterface as Response;  
class HelloWorld implements DispatchableInterface { 
   public function dispatch(Request $request, Response $response = null) { 
      $response->setContent("Hello World!"); 
   } 
}

Das DispatchableInterfaceist einfach und benötigt viele andere Schnittstellen, um High-Level-Controller zu schreiben. Einige dieser Schnittstellen sind wie folgt:

  • InjectApplicationEventInterface - Zum Einfügen von Ereignissen (Zend EventManager)

  • ServiceLocatorAwareInterface - Wird zum Auffinden von Diensten verwendet (Zend ServiceManager)

  • EventManagerAwareInterface - Zum Verwalten von Ereignissen (Zend EventManager)

Unter Berücksichtigung dieser Aspekte bietet das Zend Framework viele vorgefertigte Controller, die diese Schnittstellen implementieren. Die wichtigsten Steuerungen sind wie unten erläutert.

AbstractActionController

Der AbstractActionController (Zend / Mvc / Controller / AbstractActionController) ist der am häufigsten verwendete Controller im Zend MVC Framework. Es verfügt über alle erforderlichen Funktionen, um eine typische Webseite zu schreiben. Es ermöglicht Routen (Routing stimmt mit der Anforderungs-URL eines Controllers und einer seiner Methoden überein), mit eineraction. Bei Übereinstimmung wird eine nach der Aktion benannte Methode vom Controller aufgerufen.

Zum Beispiel, wenn eine Route test ist abgestimmt und die Route, test kehrt zurück hello zum Handeln, dann die helloAction Methode wird aufgerufen.

Schreiben wir unsere TutorialController Verwendung der AbstractActionController.

  • Erstellen Sie eine neue PHP-Klasse mit dem Namen TutorialController durch die Erweiterung der AbstractActionController und legen Sie es in die module/Tutorial/src/Controller/ Verzeichnis.

  • Stellen Sie die Tutorial\Controller als Namespace.

  • Schreib 'ein indexAction Methode.

  • Gib die ... wieder ViewModel Objekt aus indexActionMethode. DasViewModel Das Objekt wird verwendet, um Daten von der Steuerung an die View Engine zu senden, die wir in den folgenden Kapiteln sehen werden.

Die vollständige Codeliste lautet wie folgt:

?php  
namespace Tutorial\Controller;  
use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel;  
class TutorialController extends AbstractActionController { 
   public function indexAction() { 
      return new ViewModel(); 
   } 
}

Wir haben das neue erfolgreich hinzugefügt TutorialController.

AbstractRestfulController

Der AbstractRestfulController (Zend \ Mvc \ Controller \ AbstractRestfulController) überprüft das HTTP method der eingehenden Anforderung und entspricht der Aktion (Methode) unter Berücksichtigung der HTTP-Methoden

Beispielsweise stimmt die Anforderung mit der GET-HTTP-Methode entweder mit der überein getList() Methode oder die get() Methode, wenn die id Parameter wird in der Anfrage gefunden.

AbstractConsoleController

Der AbstractConsoleController (Zend \ Mvc \ Controller \ AbstractConsoleController) ähnelt dem AbstractActionController, wird jedoch nur in der Konsolenumgebung anstelle eines Browsers ausgeführt.