Zend Framework - Controller

Come discusso in precedenza, il controllergioca un ruolo importante in Zend MVC Framework. Tutte le pagine web in un'applicazione devono essere gestite da un controller.

In Zend MVC Framework, i controller sono oggetti che implementano - Zend / Stdlib / DispatchableInterface. IlDispatchableInterface ha un unico metodo, dispatch, che ottiene l'estensione Request oggetto come input, esegui un po 'di logica e ritorna Response un oggetto come output.

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

Un semplice esempio di un oggetto Controller per restituire "Hello World" è il seguente:

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

Il DispatchableInterfaceè basilare e necessita di molte altre interfacce per scrivere controller di alto livello. Alcune di queste interfacce sono le seguenti:

  • InjectApplicationEventInterface - Usato per iniettare eventi (Zend EventManager)

  • ServiceLocatorAwareInterface - Utilizzato per individuare i servizi (Zend ServiceManager)

  • EventManagerAwareInterface - Utilizzato per gestire gli eventi (Zend EventManager)

Tenendo presente queste cose, Zend Framework fornisce molti controller già pronti che implementano queste interfacce. I controller più importanti sono come spiegato di seguito.

AbstractActionController

AbstractActionController (Zend / Mvc / Controller / AbstractActionController) è il controller più utilizzato in Zend MVC Framework. Ha tutte le funzionalità necessarie per scrivere una tipica pagina web. Consente ai percorsi (il routing corrisponde all'URL della richiesta a un controller e uno dei suoi metodi) di abbinare un fileaction. In caso di corrispondenza, un metodo denominato dopo l'azione verrà chiamato dal controller.

Ad esempio, se un percorso test è abbinato e il percorso, test ritorna hello per l'azione, quindi il helloAction metodo verrà invocato.

Scriviamo il nostro TutorialController usando il AbstractActionController.

  • Crea una nuova classe PHP chiamata TutorialController estendendo il AbstractActionController e posizionalo nel file module/Tutorial/src/Controller/ directory.

  • Impostare il Tutorial\Controller come spazio dei nomi.

  • Scrivi un indexAction metodo.

  • Restituisci il file ViewModel oggetto da indexActionmetodo. IlViewModel viene utilizzato per inviare dati dal controller al motore di visualizzazione, che vedremo nei capitoli successivi.

L'elenco completo del codice è il seguente:

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

Abbiamo aggiunto con successo il nuovo TutorialController.

AbstractRestfulController

AbstractRestfulController (Zend \ Mvc \ Controller \ AbstractRestfulController) ispeziona l'HTTP method della richiesta in arrivo e corrisponde all'azione (metodo) considerando i metodi HTTP

Ad esempio, la richiesta con il metodo GET HTTP corrisponde a getList() metodo o il get() metodo, se il id parametro si trova nella richiesta.

AbstractConsoleController

AbstractConsoleController (Zend \ Mvc \ Controller \ AbstractConsoleController) è come AbstractActionController tranne per il fatto che viene eseguito solo nell'ambiente della console anziché in un browser.