Zend Framework - Pengontrol

Seperti yang telah dibahas sebelumnya, file controllermemainkan peran penting dalam Zend MVC Framework. Semua halaman web dalam aplikasi perlu ditangani oleh pengontrol.

Dalam Zend MVC Framework, pengontrol adalah objek yang mengimplementasikan - Zend / Stdlib / DispatchableInterface. ItuDispatchableInterface memiliki satu metode, dispatch, yang mendapatkan Request objek sebagai masukan, lakukan beberapa logika dan pengembalian Response sebuah objek sebagai keluaran.

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

Contoh sederhana dari objek Controller untuk mengembalikan "Hello World" adalah sebagai berikut -

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

Itu DispatchableInterfaceadalah dasar dan membutuhkan banyak antarmuka lain untuk menulis pengontrol tingkat tinggi. Beberapa antarmuka tersebut adalah sebagai berikut -

  • InjectApplicationEventInterface - Digunakan untuk menyuntikkan acara (Zend EventManager)

  • ServiceLocatorAwareInterface - Digunakan untuk mencari Layanan (Zend ServiceManager)

  • EventManagerAwareInterface - Digunakan untuk mengelola acara (Zend EventManager)

Dengan mengingat hal-hal ini, Zend Framework menyediakan banyak pengontrol siap pakai yang mengimplementasikan antarmuka ini. Pengontrol terpenting dijelaskan di bawah ini.

AbstractActionController

AbstractActionController (Zend / Mvc / Controller / AbstractActionController) adalah pengontrol yang paling banyak digunakan dalam Zend MVC Framework. Ia memiliki semua fitur yang diperlukan untuk menulis halaman web yang khas. Ini memungkinkan rute (Perutean mencocokkan url permintaan ke pengontrol dan salah satu metodenya) untuk mencocokkanaction. Jika cocok, metode yang dinamai setelah tindakan akan dipanggil oleh pengontrol.

Misalnya jika sebuah rute test cocok dan rutenya, test kembali hello untuk tindakan, lalu helloAction metode akan dipanggil.

Mari kita tulis TutorialController menggunakan AbstractActionController.

  • Buat kelas PHP baru bernama TutorialController dengan memperpanjang AbstractActionController dan letakkan di module/Tutorial/src/Controller/ direktori.

  • Mengatur Tutorial\Controller sebagai namespace.

  • Menulis sebuah indexAction metode.

  • Kembalikan ViewModel objek dari indexActionmetode. ItuViewModel object digunakan untuk mengirim data dari controller ke view engine, yang akan kita lihat pada bab-bab selanjutnya.

Daftar kode lengkapnya adalah sebagai berikut -

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

Kami telah berhasil menambahkan yang baru TutorialController.

AbstractRestfulController

AbstractRestfulController (Zend \ Mvc \ Controller \ AbstractRestfulController) memeriksa HTTP method dari permintaan yang masuk dan mencocokkan aksi (metode) dengan mempertimbangkan metode HTTP

Misalnya, permintaan dengan metode HTTP GET cocok dengan getList() metode atau get() metode, jika id parameter ditemukan dalam permintaan.

AbstractConsoleController

AbstractConsoleController (Zend \ Mvc \ Controller \ AbstractConsoleController) adalah seperti AbstractActionController kecuali hanya berjalan di lingkungan konsol, bukan di browser.