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.