Zend Framework - Контроллеры
Как обсуждалось ранее, controllerиграет важную роль в Zend MVC Framework. Все веб-страницы в приложении должны обрабатываться контроллером.
В Zend MVC Framework контроллеры - это объекты, реализующие - Zend / Stdlib / DispatchableInterface. ВDispatchableInterface имеет единственный метод, dispatch, который получает Request объект в качестве ввода, выполните некоторую логику и вернет Response объект в качестве вывода.
dispatch(Request $request, Response $response = null)
Простой пример объекта Controller, возвращающего «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!");
}
}
В DispatchableInterfaceявляется базовым и требует множества других интерфейсов для написания контроллеров высокого уровня. Некоторые из таких интерфейсов следующие:
InjectApplicationEventInterface - Используется для внедрения событий (Zend EventManager)
ServiceLocatorAwareInterface - Используется для поиска служб (Zend ServiceManager)
EventManagerAwareInterface - Используется для управления событиями (Zend EventManager)
Помня об этом, Zend Framework предоставляет множество готовых контроллеров, реализующих эти интерфейсы. Наиболее важные контроллеры описаны ниже.
AbstractActionController
AbstractActionController (Zend / Mvc / Controller / AbstractActionController) является наиболее часто используемым контроллером в Zend MVC Framework. В нем есть все необходимые функции для написания типичной веб-страницы. Он позволяет маршрутам (маршрутизация - это сопоставление URL-адреса запроса с контроллером и одним из его методов) для сопоставленияaction. При совпадении метод, названный в честь действия, будет вызван контроллером.
Например, если маршрут test совпадает и маршрут, test возвращается hello для действий, то helloAction будет вызван метод.
Напишем наш TutorialController используя AbstractActionController.
Создайте новый класс PHP с именем TutorialController за счет расширения AbstractActionController и поместите его в module/Tutorial/src/Controller/ каталог.
Установить Tutorial\Controller как пространство имен.
Напишите indexAction метод.
Вернуть ViewModel объект из indexActionметод. ВViewModel объект используется для отправки данных из контроллера в движок просмотра, что мы увидим в следующих главах.
Полный список кода выглядит следующим образом -
?php
namespace Tutorial\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class TutorialController extends AbstractActionController {
public function indexAction() {
return new ViewModel();
}
}
Мы успешно добавили новый TutorialController.
АннотацияRestfulController
AbstractRestfulController (Zend \ Mvc \ Controller \ AbstractRestfulController) проверяет HTTP method входящего запроса и соответствует действию (методу) с учетом методов HTTP
Например, запрос с методом GET HTTP либо соответствует getList() метод или get() метод, если id параметр находится в запросе.
AbstractConsoleController
AbstractConsoleController (Zend \ Mvc \ Controller \ AbstractConsoleController) похож на AbstractActionController, за исключением того, что он работает только в среде консоли, а не в браузере.