文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>FleaPHP 使用 Simple 调度器的 MVC 处理流程

FleaPHP 使用 Simple 调度器的 MVC 处理流程

时间:2008-04-12  来源:qeeify


这篇文章清晰的描述了在 FleaPHP 中使用 FLEA_Dispatcher_Simple 作为调度器时,应用程序是如何从 index.php 开始执行直到整个流程结束的。这篇文章对于理解 FleaPHP 应用程序的工作流程有极好的帮助。
本文来源网址:
http://www.fleaphp.org/bbs/viewthread.php?tid=2533

本文原作者:yk5515
执行 index.php
index.php 的主要任务是负责载入 FLEA.php 文件和应用程序设置,然后通过 FLEA::runMVC() 启动 MVC 模式。
runMVC()
runMVC() 首先根据应用程序设置 MVCPackageFilename 读取 Action 文件,这样确保后续载入控制器类时不会发生错误。接下来就是调用 FLEA::init() 初始化运行环境和构造调度器启动 MVC 了。
初始化环境 FLEA::init()

  • 设置一个静态变量,防止重复调用
  • 根据应用程序设置“exceptionHandler”安装一个异常处理,如果是PHP5就调用PHP自带的set_exception_handler安装这个异常,依然根据应用程序设置
  • 根据应用程序设置“logEnabled”“ logProvider”载入日志“logProvider”,如果函数log_message不存在就定义一个空log_message()
  • 读取缓存目录“internalCacheDir”,如果找不到,就使用FLEA默认的缓存目录
  • 将& $_GET, & $_POST, &$_COOKIE, & $_REQUEST中addslashes()处理过的字符串还原,并关闭magic_quotes
  • 判断如果应用程序设置中“urlMode”不是设置的标准模式就载入url分析过滤器
  • 逐个读入应用程序设置” requestFilters”中的过滤器
  • 判断应用程序设置“MVCPackageFilename”是否开启MVC模式,如果开启则调用action文件
  • 逐个载入应用程序设置‘autoLoad’中的文件
  • 载入应用程序设置sessionProvide中的 session 服务提供程序,并返回一个实例
  • 根据应用程序设置autoSessionStart自动起用 session 会话
  • 读取应用程序设置responseCharset和databaseCharset中定义的编码格式,并定义为常量
  • 判断应用程序设置multiLanguageSupport是否设置了多语言,如果是则载入FLEA_Language,并返回一个实例
  • 检查过滤函数_T是否存在,如果不存在定义一个空的
  • 判断应用程序设置是否设置了autoResponseHeader(自动输出HTML的头信息),如果是就设置相应的编码格式

构造调度器

  • 读取应用程序设置dispatcher的默认调度器并载入
  • 执行调度器对象的构造函数
  • 引用传入的GET信息赋值给_requestBackup
  • 读取应用程序设置中的controllerAccessor和actionAccessor,默认为’controller’和’action’(这里用户可以自己修改这2个设置,把URL变的更短)
  • 将传入的GET信息转换为小写并赋值给$r
  • 构建空数组$data
  • 检查$r中是否设置了控制器、动作,如果设置了就赋值给$data
  • 把$data的值赋值给$this->_request

启动 MVC 模式

  • 调用新建对象的dispatching函数
  • 调用getControllerName和getActionName获取控制器名称和动作名称

    • 正则过滤,匹配规则是大小写字母和数字
    • 判断如果控制器名或者动作名为空就调用应用程序设置defaultController或defaultAction(默认控制器或动作名)
    • 应用程序设置是否开启了将动作名和控制器强制转换成小写urlLowerChar,如果开启了就把名称转换成小写
    • 返回动作或者控制器名称

  • executeAction执行Action方法

    • 调度器失败以后调用的函数名(应用程序设置dispatcherFailedCallback)
    • 设置方法名的前缀和后缀(应用程序设置actionMethodPrefix、actionMethodSuffix)
    • 载入控制器,判断该类是否存在,如果不存在就退出循环
    • 把当前处理的控制的名和动作名放到设置中
    • 新建控制器对象
    • 判断如果控制器中不存在指定方法,就退出循环
    • 判断如果控制器中存在setController、setDispatcher和_beforeExecute方法,就执行
    • 执行action方法
    • 判断如果存在函数_afterExecute就执行
    • 返回action执行结果
    • 判断是否调用自定义的调度器失败处理函数,如果应用程序设置中设置了,就动态的运行此函数
    • 如果控制器为空,调用出错处理FLEA_Exception_MissingController,抛出一个异常包括控制器名、动作名等信息, 返回false
    • 调用出错处理FLEA_Exception_MissingAction,抛出异常同上, 返回false

更多信息,请访问 FleaPHP/QeePHP 开源开发框架官方网站:
http://www.fleaphp.org/



相关阅读 更多 +
排行榜 更多 +
粉末星战 v1.0.0 安卓版

粉末星战 v1.0.0 安卓版

休闲益智 下载
粉末星战 v1.0.0 安卓版

粉末星战 v1.0.0 安卓版

休闲益智 下载
火线反恐部队 v1.2 安卓版

火线反恐部队 v1.2 安卓版

飞行射击 下载