目录
当前位置: 首页 > 文档资料 > Yaf 用户手册 >

11.4. The Yaf_Dispatcher class

优质
小牛编辑
131浏览
2023-12-01

简介

Yaf_Dispatcher实现了MVC中的C分发, 它由Yaf_Application负责初始化, 然后由Yaf_Application::run启动, 它协调路由来的请求, 并分发和执行发现的动作,并收集动作产生的响应, 输出响应给请求者, 并在整个过程完成以后返回响应.

在PHP5.3之后, 打开yaf.use_namespace的情况下, 也可以使用Yaf\Dispatcher.

 
  final 
  Yaf_Dispatcher
{
  
  protected 
  static 
  
 Yaf_Dispatcher
 
 _instance

   ;
  
  protected 
  
 Yaf_Router_Interface
 
 _router

   ;
  
  protected 
  
 Yaf_View_Abstract
 
 _view

   ;
  
  protected 
  
 Yaf_Request_Abstract
 
 _request

   ;
  
  protected 
  
 array
 
 _plugins

   ;
  
  protected 
  boolean 
 _render

   ;
  
  protected 
  boolean 
 _return_response
= FALSE
   ;
  
  protected 
  boolean 
 _instantly_flush
= FALSE
   ;
  
  protected 
  string 
 _default_module

   ;
  
  protected 
  string 
 _default_controller

   ;
  
  protected 
  string 
 _default_action

   ;
public static Yaf_Dispatcher 
 getInstance ( void  );
public Yaf_Dispatcher 
 disableView ( void  );
public Yaf_Dispatcher 
 enableView ( void  );
public boolean 
 autoRender ( bool  $flag );
public Yaf_Dispatcher 
 returnResponse ( boolean  $flag );
public Yaf_Dispatcher 
 flushInstantly ( boolean  $flag );
public Yaf_Dispatcher 
 setErrorHandler ( mixed  $callback ,
  int  $error_type = E_ALL | E_STRICT );
public Yaf_Application 
 getApplication ( void  );
public Yaf_Request_Abstract 
 getRequest ( void  );
public Yaf_Router_Interface 
 getRouter ( void  );
public Yaf_Dispatcher 
 registerPlugin ( Yaf_Plugin_Abstract  $plugin );
public Boolean 
 setAppDirectory ( string  $directory );
public Yaf_Dispatcher 
 setRequest ( Yaf_Request_Abstract  $request );
public Yaf_View_Interface 
 initView ( void  );
public Yaf_Dispatcher 
 setView ( Yaf_View_Interface  $view );
public Yaf_Dispatcher 
 setDefaultModule ( string  $default_module_name );
public Yaf_Dispatcher 
 setDefaultController ( string  $default_controller_name );
public Yaf_Dispatcher 
 setDefaultAction ( string  $default_action_name );
public Yaf_Dispatcher 
 throwException ( boolean  $switch = FALSE );
public Yaf_Dispatcher 
 catchException ( boolean  $switch = FALSE );
public Yaf_Response_Abstract 
 dispatch ( Yaf_Request_Abstract  $request );
}
属性说明
_instance

Yaf_Dispatcher实现了单利模式, 此属性保存当前实例

_request

当前的请求

_router

路由器, 在Yaf0.1之前, 路由器是可更改的, 但是Yaf0.2以后, 随着路由器和路由协议的分离, 各种路由都可以通过配置路由协议来实现, 也就取消了自定义路由器的功能

_view

当前的视图引擎, 可以通过Yaf_Dispatcher::setView来替换视图引擎为自定义视图引擎(比如Smary/Firekylin等常见引擎)

_plugins

已经注册的插件, 插件一经注册, 就不能更改和删除

_render

标示着,是否在动作执行完成后, 调用视图引擎的render方法, 产生响应. 可以通过Yaf_Dispatcher::disableView和Yaf_Dispatcher::enableView来切换开关状态

_return_response

标示着,是否在产生响应以后, 不自动输出给客户端, 而是返回给调用者. 可以通过Yaf_Dispatcher::returnResponse来切换开关状态

_instantly_flush

标示着, 是否在有输出的时候, 直接响应给客户端, 不写入Yaf_Response_Abstract对象.

注意
如果此属性为TRUE, 那么将忽略Yaf_Dispatcher::$_return_response
_default_module

默认的模块名, 在路由的时候, 如果没有指明模块, 则会使用这个值, 也可以通过配置文件中的ap.dispatcher.defaultModule来指定

_default_controller

默认的控制器名, 在路由的时候, 如果没有指明控制器, 则会使用这个值, 也可以通过配置文件中的ap.dispatcher.defaultController来指定

_default_action

默认的动作名, 在路由的时候, 如果没有指明动作, 则会使用这个值, 也可以通过配置文件中的ap.dispatcher.defaultAction来指定