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.