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.

AbstractRestfulController

AbstractRestfulController (Zend \ Mvc \ Controller \ AbstractRestfulController) ตรวจสอบ HTTP method ของคำขอที่เข้ามาและตรงกับการดำเนินการ (วิธีการ) โดยพิจารณาจากวิธี HTTP

ตัวอย่างเช่นคำขอด้วยเมธอด GET HTTP ก็ตรงกับไฟล์ getList() วิธีการหรือ get() วิธีการถ้า id พบพารามิเตอร์ในคำขอ

AbstractConsoleController

AbstractConsoleController (Zend \ Mvc \ Controller \ AbstractConsoleController) เหมือนกับ AbstractActionController ยกเว้นว่าจะทำงานในสภาพแวดล้อมคอนโซลเท่านั้นแทนที่จะเป็นเบราว์เซอร์