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 ยกเว้นว่าจะทำงานในสภาพแวดล้อมคอนโซลเท่านั้นแทนที่จะเป็นเบราว์เซอร์