Zend Framework - kontrolery
Jak wspomniano wcześniej, plik controllerodgrywa ważną rolę w Zend MVC Framework. Wszystkie strony internetowe w aplikacji muszą być obsługiwane przez kontroler.
W Zend MVC Framework, kontrolery są obiektami implementującymi - Zend / Stdlib / DispatchableInterface. PlikDispatchableInterface ma jedną metodę, dispatch, który pobiera Request obiekt jako wejście, wykonaj jakąś logikę i zwraca Response obiekt jako wyjście.
dispatch(Request $request, Response $response = null)
Prosty przykład obiektu kontrolera zwracającego „Hello World” jest następujący:
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!");
}
}
Plik DispatchableInterfacejest podstawowa i wymaga wielu innych interfejsów do pisania kontrolerów wysokiego poziomu. Oto niektóre z takich interfejsów -
InjectApplicationEventInterface - Służy do wstrzykiwania zdarzeń (Zend EventManager)
ServiceLocatorAwareInterface - Służy do lokalizowania usług (Zend ServiceManager)
EventManagerAwareInterface - Służy do zarządzania wydarzeniami (Zend EventManager)
Mając to na uwadze, Zend Framework zapewnia wiele gotowych kontrolerów implementujących te interfejsy. Najważniejsze kontrolery opisano poniżej.
AbstractActionController
AbstractActionController (Zend / Mvc / Controller / AbstractActionController) jest najczęściej używanym kontrolerem w Zend MVC Framework. Posiada wszystkie niezbędne funkcje do napisania typowej strony internetowej. Pozwala trasom (routing dopasowuje adres URL żądania do kontrolera i jedną z jego metod) na dopasowanie doaction. Po dopasowaniu metoda nazwana na podstawie akcji zostanie wywołana przez kontroler.
Na przykład, jeśli trasa test jest dopasowana i trasa, test zwroty hello do działania, a następnie helloAction zostanie wywołana metoda.
Napiszmy nasze TutorialController używając AbstractActionController.
Utwórz nową klasę PHP o nazwie TutorialController poprzez rozszerzenie AbstractActionController i umieść go w module/Tutorial/src/Controller/ informator.
Ustaw Tutorial\Controller jako przestrzeń nazw.
Napisać indexAction metoda.
Zwróć ViewModel obiekt z indexActionmetoda. PlikViewModel obiekt służy do przesłania danych ze sterownika do podglądu silnika, o czym przekonamy się w kolejnych rozdziałach.
Pełna lista kodów jest następująca -
?php
namespace Tutorial\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class TutorialController extends AbstractActionController {
public function indexAction() {
return new ViewModel();
}
}
Pomyślnie dodaliśmy nowy TutorialController.
AbstractRestfulController
AbstractRestfulController (Zend \ Mvc \ Controller \ AbstractRestfulController) sprawdza HTTP method przychodzącego żądania i dopasowuje akcję (metodę) z uwzględnieniem metod HTTP
Na przykład żądanie z metodą GET HTTP jest zgodne z getList() metoda lub get() metoda, jeśli id parametr znajduje się w żądaniu.
AbstractConsoleController
AbstractConsoleController (Zend \ Mvc \ Controller \ AbstractConsoleController) jest podobny do AbstractActionController, z wyjątkiem tego, że działa tylko w środowisku konsoli zamiast w przeglądarce.