Zend Framework - Bộ điều khiển
Như đã thảo luận trước đó, controllerđóng một vai trò quan trọng trong Zend MVC Framework. Tất cả các trang web trong ứng dụng cần được bộ điều khiển xử lý.
Trong Zend MVC Framework, bộ điều khiển là các đối tượng triển khai - Zend / Stdlib / DispatchableInterface. CácDispatchableInterface có một phương pháp duy nhất, dispatch, mà có được Request đối tượng làm đầu vào, thực hiện một số logic và trả về Response một đối tượng làm đầu ra.
dispatch(Request $request, Response $response = null)
Một ví dụ đơn giản về đối tượng Controller để trả về “Hello World” như sau:
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!");
}
}
Các DispatchableInterfacelà cơ bản và nó cần nhiều giao diện khác để viết các bộ điều khiển cấp cao. Một số giao diện như sau:
InjectApplicationEventInterface - Được sử dụng để chèn sự kiện (Zend EventManager)
ServiceLocatorAwareInterface - Được sử dụng để định vị Dịch vụ (Zend ServiceManager)
EventManagerAwareInterface - Dùng để quản lý các sự kiện (Zend EventManager)
Hãy ghi nhớ những điều này, Zend Framework cung cấp rất nhiều bộ điều khiển chế tạo sẵn để triển khai các giao diện này. Các bộ điều khiển quan trọng nhất như được giải thích bên dưới.
AbstractActionController
AbstractActionController (Zend / Mvc / Controller / AbstractActionController) là bộ điều khiển được sử dụng nhiều nhất trong Zend MVC Framework. Nó có tất cả các tính năng cần thiết để viết một trang web điển hình. Nó cho phép các tuyến đường (Định tuyến là đối sánh url yêu cầu với bộ điều khiển và một trong các phương thức của nó) để khớp vớiaction. Khi được khớp, một phương thức được đặt tên theo hành động sẽ được bộ điều khiển gọi.
Ví dụ, nếu một tuyến đường test phù hợp và tuyến đường, test trả lại hello cho hành động, sau đó helloAction phương thức sẽ được gọi.
Hãy để chúng tôi viết TutorialController sử dụng AbstractActionController.
Tạo một lớp PHP mới được gọi là TutorialController bằng cách mở rộng AbstractActionController và đặt nó trong module/Tutorial/src/Controller/ danh mục.
Đặt Tutorial\Controller như không gian tên.
Viết một indexAction phương pháp.
Trả lại ViewModel đối tượng từ indexActionphương pháp. CácViewModel đối tượng được sử dụng để gửi dữ liệu từ bộ điều khiển đến bộ máy xem, chúng ta sẽ thấy trong các chương tiếp theo.
Danh sách mã hoàn chỉnh như sau:
?php
namespace Tutorial\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class TutorialController extends AbstractActionController {
public function indexAction() {
return new ViewModel();
}
}
Chúng tôi đã thêm mới thành công TutorialController.
AbstractRestfulController
AbstractRestfulController (Zend \ Mvc \ Controller \ AbstractRestfulController) kiểm tra HTTP method của yêu cầu đến và khớp với hành động (phương thức) bằng cách xem xét các phương thức HTTP
Ví dụ: yêu cầu với phương thức GET HTTP phù hợp với getList() phương pháp hoặc get() phương pháp, nếu id tham số được tìm thấy trong yêu cầu.
AbstractConsoleController
AbstractConsoleController (Zend \ Mvc \ Controller \ AbstractConsoleController) giống như AbstractActionController ngoại trừ việc nó chỉ chạy trong môi trường console thay vì trình duyệt.