Zend Framework - Kontrolörler

Daha önce tartışıldığı gibi, controllerZend MVC Çerçevesinde önemli bir rol oynar. Bir uygulamadaki tüm web sayfalarının bir kontrolör tarafından ele alınması gerekir.

Zend MVC Çerçevesinde, kontrolörler - Zend / Stdlib / DispatchableInterface'i uygulayan nesnelerdir. DispatchableInterface tek bir yöntemi vardır, dispatch, hangisini alır Request girdi olarak nesne, biraz mantık yap ve geri dön Response çıktı olarak bir nesne.

dispatch(Request $request, Response $response = null)

"Hello World" döndürmek için bir Controller nesnesinin basit bir örneği aşağıdaki gibidir -

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!"); 
   } 
}

DispatchableInterfacetemeldir ve üst düzey denetleyicileri yazmak için birçok başka arabirime ihtiyaç duyar. Bu tür arayüzlerden bazıları aşağıdaki gibidir -

  • InjectApplicationEventInterface - Olayları enjekte etmek için kullanılır (Zend EventManager)

  • ServiceLocatorAwareInterface - Hizmetleri bulmak için kullanılır (Zend ServiceManager)

  • EventManagerAwareInterface - Olayları yönetmek için kullanılır (Zend EventManager)

Bunları akılda tutarak, Zend Framework bu arayüzleri uygulayan birçok hazır kontrolör sağlar. En önemli kontrolörler aşağıda açıklandığı gibidir.

AbstractActionController

AbstractActionController (Zend / Mvc / Controller / AbstractActionController), Zend MVC Çerçevesinde en çok kullanılan denetleyicidir. Tipik bir web sayfası yazmak için gerekli tüm özelliklere sahiptir. Yolların (Yönlendirme, istek url'sini bir denetleyiciyle eşleştiriyor ve yöntemlerinden biri) biraction. Eşleştirildiğinde, eylemin adını taşıyan bir yöntem denetleyici tarafından çağrılacaktır.

Örneğin, bir rota test eşleşti ve rota, test İadeler hello eylem için, sonra helloAction yöntem çağrılacaktır.

Bize yazalım TutorialController kullanmak AbstractActionController.

  • Adlı yeni bir PHP sınıfı oluşturun TutorialController genişleterek AbstractActionController ve yerleştirin module/Tutorial/src/Controller/ dizin.

  • Yı kur Tutorial\Controller ad alanı olarak.

  • Yaz indexAction yöntem.

  • Geri dön ViewModel nesneden indexActionyöntem. ViewModel nesnesi, sonraki bölümlerde göreceğimiz motoru görüntülemek için denetleyiciden veri göndermek için kullanılır.

Tam kod listesi aşağıdaki gibidir -

?php  
namespace Tutorial\Controller;  
use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel;  
class TutorialController extends AbstractActionController { 
   public function indexAction() { 
      return new ViewModel(); 
   } 
}

Yeniyi başarıyla ekledik TutorialController.

AbstractRestfulController

AbstractRestfulController (Zend \ Mvc \ Controller \ AbstractRestfulController) HTTP method gelen istek ve HTTP yöntemlerini dikkate alarak eylem (yöntem) ile eşleşir

Örneğin, GET HTTP yöntemine sahip istek, ya getList() yöntem veya get() yöntem, eğer id parametresi istekte bulunur.

AbstractConsoleController

AbstractConsoleController (Zend \ Mvc \ Controller \ AbstractConsoleController), bir tarayıcı yerine yalnızca konsol ortamında çalışması dışında AbstractActionController gibidir.