Gavin

框架核心文件simple.php思考

Simple.php思考

功能

框架核心文件,项目运行起点,通过这个文件,把整个项目串联起来。

  • 提供预定义常量
  • 异常捕获
  • 初始化
  • 执行顺序

提供预定义常量

以下变量可以在index.php入口文件中,进行定制化修改。

  • 1
    DEBUG
    • 调试开关。
    • 开启调试功能后,出现异常会打印相关调试信息。
    • 关闭后会自动进入对应的异常处理流程,如有用户定义的异常处理函数,则调用相关函数。
  • 1
    LOG_LEVEL
    • 日志开关
    • 开启日志开关后,系统会自动打印相关日志。
    • 同时定义日志级别。
  • 1
    ERROR_TYPE
    • 要捕获的错误级别
    • 定义set_error_handler要捕获的级别,捕获到的错误进入异常处理流程。
  • 1
    AUTO_PARAM_JSON
    • JSON格式POST数据自动解析至$_POST变量
  • 1
    APP_NAMESPACE
    • 定义实际项目项目执行目录命名空间,即Controller所在根命名空间
    • 可以在index.php入口文件中,根据host进行修改,以达到多域名复用代码的功能

异常捕获

对项目类代码使用

1
try/catch

执行,捕获到异常后进入对应的异常处理流程,并提供入口允许用户自定义相关异常处理。

异常分类

  • 编码级别错误
    • set_error_handler捕获的错误
    • error_get_last捕获的fatal error
  • 框架级别异常
    • 模板/配置文件未找到
    • 参数不合法
  • DB类异常
    • 执行sql报错
    • 重复主键可以特殊定义错误码
  • 404类异常
    • Controller文件不存在
    • Controller中的action方法不存在
  • 其他异常
    • 未知代码抛出的未归类未捕获异常,统一捕获并提供处理

初始化

进行一些前期准备工作,包括目录的设置、回调函数的设置等。

  1. 记录项目初始化时间/内存消耗
  2. 设置相关回调函数 set_error_handler/register_shutdown_function
  3. 初始化app/config/view相关目录
  4. 载入初始态钩子
  5. 加载用户配置的路由、自定义异常处理逻辑

执行顺序

  1. 初始化
    1
    request

    类,解析收到的请求头,GET/POST变量,对变量进行xss/csrf过滤。

  2. 初始化
    1
    route

    类,使用

    1
    route

    类解析request->url变量,找到对应的Controller/Action。

  3. 调用Controller/Action方法执行项目代码及相关逻辑。
  4. Controller执行完逻辑后return数据。
  5. 使用
    1
    response

    将数据输出。

  6. 如果有
    1
    catch

    到任何异常,判断是否开启

    1
    DEBUG

    ,有开启则打印调试信息,否则调用用户自定义函数处理异常逻辑。

码字很辛苦,转载请注明来自淡兰色的海洋《框架核心文件simple.php思考》

评论