
- Zend Framework 教程
- Zend Framework - 首頁
- Zend Framework - 簡介
- Zend Framework - 安裝
- 框架應用程式
- Zend Framework - MVC 架構
- Zend Framework - 概念
- Zend Framework - 服務管理器
- Zend Framework - 事件管理器
- Zend Framework - 模組系統
- 應用程式結構
- Zend Framework - 建立模組
- Zend Framework - 控制器
- Zend Framework - 路由
- Zend Framework - 檢視層
- Zend Framework - 佈局
- 模型和資料庫
- 不同的資料庫
- 表單和驗證
- Zend Framework - 檔案上傳
- Zend Framework - Ajax
- Cookie 管理
- 會話管理
- Zend Framework - 身份驗證
- 電子郵件管理
- Zend Framework - 單元測試
- Zend Framework - 錯誤處理
- Zend Framework - 工作示例
- Zend Framework 有用資源
- Zend Framework - 快速指南
- Zend Framework - 有用資源
- Zend Framework - 討論
Zend Framework - 控制器
如前所述,**控制器**在 Zend MVC 框架中扮演著重要的角色。應用程式中的所有網頁都需要由控制器來處理。
在 Zend MVC 框架中,控制器是實現 – Zend/Stdlib/DispatchableInterface 的物件。**DispatchableInterface** 只有一個方法,**dispatch**,它以**請求**物件作為輸入,執行一些邏輯並返回**響應**物件作為輸出。
dispatch(Request $request, Response $response = null)
以下是一個返回“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 事件管理器)
**ServiceLocatorAwareInterface** - 用於定位服務(Zend 服務管理器)
**EventManagerAwareInterface** - 用於管理事件(Zend 事件管理器)
牢記這些,Zend Framework 提供了許多實現這些介面的現成控制器。最重要的控制器如下所述。
AbstractActionController
AbstractActionController(Zend/Mvc/Controller/AbstractActionController)是 Zend MVC 框架中最常用的控制器。它具有編寫典型網頁所需的所有必要功能。它允許路由(路由是將請求 URL 與控制器及其方法之一匹配)匹配一個**操作**。匹配後,控制器將呼叫以操作命名的某個方法。
例如,如果路由**test**匹配,並且路由**test**為操作返回**hello**,則將呼叫**helloAction**方法。
讓我們使用**AbstractActionController**編寫我們的**TutorialController**。
透過擴充套件**AbstractActionController**建立一個名為**TutorialController**的新 PHP 類,並將其放置在**module/Tutorial/src/Controller/**目錄中。
將**Tutorial\Controller**設定為名稱空間。
編寫一個**indexAction**方法。
從**indexAction**方法返回**ViewModel**物件。**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**方法**,並透過考慮 HTTP 方法來匹配操作(方法)。
例如,使用 GET HTTP 方法的請求要麼匹配**getList()**方法,要麼匹配**get()**方法(如果在請求中找到**id**引數)。
AbstractConsoleController
AbstractConsoleController(Zend\Mvc\Controller\AbstractConsoleController)類似於 AbstractActionController,但它只在控制檯環境中執行,而不是在瀏覽器中執行。