分發器負責根據請求物件中的模組、控制器、動作資訊,載入對應控制器類別並執行動作方法。核心介面 Zend_Controller_Dispatcher_Interface、抽象實作 Zend_Controller_Dispatcher_Abstract、標準實作 Zend_Controller_Dispatcher_Standard。
formatControllerName():foo_bar → FooBarControllerformatActionName():foo-bar → fooBarActionformatModuleName():模組名首字大寫addControllerDirectory($path, $module):新增模組控制器目錄。setControllerDirectory():設定單一或多模組目錄陣列。getControllerDirectory():取得目錄路徑。isDispatchable()。getControllerClass()。loadClass()。dispatch($action)。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 請求處理的核心樞紐,標準實作已涵蓋多模組、命名格式化、類別自動載入等功能,透過介面導向設計方便開發者替換或擴充分發策略。