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.