首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Zend Framework 分發器 Zend_Controller_Dispatcher 架構與自訂擴充指南

     編輯:PHP 綜合知識

分發器架構

分發器負責根據請求物件中的模組、控制器、動作資訊,載入對應控制器類別並執行動作方法。核心介面 Zend_Controller_Dispatcher_Interface、抽象實作 Zend_Controller_Dispatcher_Abstract、標準實作 Zend_Controller_Dispatcher_Standard。

核心功能

名稱格式化

  • formatControllerName():foo_bar → FooBarController
  • formatActionName():foo-bar → fooBarAction
  • formatModuleName():模組名首字大寫

控制器目錄管理

  • addControllerDirectory($path, $module):新增模組控制器目錄。
  • setControllerDirectory():設定單一或多模組目錄陣列。
  • getControllerDirectory():取得目錄路徑。

分發流程

  1. 判斷請求是否可分發 isDispatchable()。
  2. 取得控制器類別名稱 getControllerClass()。
  3. 載入類別檔案 loadClass()。
  4. 實例化控制器並呼叫 dispatch($action)。
  5. 輸出緩衝處理(可停用)。

前端控制器整合

Zend_Controller_Front 持有分發器實例,分發循環中依序觸發外掛鉤子、路由匹配、分發執行:

do {
    $request->setDispatched(true);
    $plugins->preDispatch($request);
    if (!$request->isDispatched()) continue;
    $dispatcher->dispatch($request, $response);
    $plugins->postDispatch($request);
} while (!$request->isDispatched());

自訂分發器

繼承 Zend_Controller_Dispatcher_Abstract 或 Standard 可修改:

  • 類別/方法命名規則(如改用底線分隔)。
  • 控制器載入方式(如改載入動作檔案而非類別方法)。
  • 模組驗證邏輯。

總結

分發器是 MVC 請求處理的核心樞紐,標準實作已涵蓋多模組、命名格式化、類別自動載入等功能,透過介面導向設計方便開發者替換或擴充分發策略。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved