Zend Framework - Contrôleurs

Comme indiqué précédemment, le controllerjoue un rôle important dans le Zend MVC Framework. Toutes les pages Web d'une application doivent être gérées par un contrôleur.

Dans le Zend MVC Framework, les contrôleurs sont des objets implémentant - Zend / Stdlib / DispatchableInterface. leDispatchableInterface a une seule méthode, dispatch, qui obtient le Request objet comme entrée, faites de la logique et retourne Response un objet comme sortie.

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

Voici un exemple simple d’objet Controller pour renvoyer «Hello World»:

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!"); 
   } 
}

le DispatchableInterfaceest basique et nécessite de nombreuses autres interfaces pour écrire des contrôleurs de haut niveau. Certaines de ces interfaces sont les suivantes -

  • InjectApplicationEventInterface - Utilisé pour injecter des événements (Zend EventManager)

  • ServiceLocatorAwareInterface - Utilisé pour localiser les services (Zend ServiceManager)

  • EventManagerAwareInterface - Utilisé pour gérer les événements (Zend EventManager)

En gardant ces choses à l'esprit, le Zend Framework fournit de nombreux contrôleurs prêts à l'emploi implémentant ces interfaces. Les contrôleurs les plus importants sont décrits ci-dessous.

AbstractActionController

Le AbstractActionController (Zend / Mvc / Controller / AbstractActionController) est le contrôleur le plus utilisé dans le Zend MVC Framework. Il possède toutes les fonctionnalités nécessaires pour écrire une page Web typique. Il permet aux routes (le routage fait correspondre l'URL de la requête à un contrôleur et à l'une de ses méthodes) de faire correspondre unaction. En cas de correspondance, une méthode nommée d'après l'action sera appelée par le contrôleur.

Par exemple, si un itinéraire test correspond et l'itinéraire, test Retour hello pour l'action, puis le helloAction sera invoquée.

Écrivons notre TutorialController en utilisant le AbstractActionController.

  • Créez une nouvelle classe PHP appelée TutorialController en étendant le AbstractActionController et placez-le dans le module/Tutorial/src/Controller/ annuaire.

  • Met le Tutorial\Controller comme espace de noms.

  • Écrire un indexAction méthode.

  • Retourner le ViewModel objet de indexActionméthode. leViewModel object est utilisé pour envoyer des données depuis le contrôleur vers le moteur de visualisation, ce que nous verrons dans les chapitres suivants.

La liste complète des codes est la suivante -

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

Nous avons ajouté avec succès le nouveau TutorialController.

RésuméRestfulController

Le AbstractRestfulController (Zend \ Mvc \ Controller \ AbstractRestfulController) inspecte le HTTP method de la requête entrante et correspond à l'action (méthode) en considérant les méthodes HTTP

Par exemple, la requête avec la méthode HTTP GET correspond soit à la getList() méthode ou la get() méthode, si le id Le paramètre se trouve dans la requête.

RésuméConsoleContrôleur

Le AbstractConsoleController (Zend \ Mvc \ Controller \ AbstractConsoleController) est comme le AbstractActionController sauf qu'il ne fonctionne que dans l'environnement de la console au lieu d'un navigateur.