ThinkPHP设计模式

单例模式:数据库连接DB
工厂模式:比如Db.class.php中的factory()方法
适配器模式:驱动类,数据库
观察者模式:Hook类

注册树模式:绑定容器
外观模式:facade门面模式。

执行流程

1、入口文件(index.php)

  1)定义目录常量
  2)加载框架引导目录
2、加载框架的引导文件(\thinkphp\start.php)
  1) 引导基础文件
  2) 对应用进行运转
3、加载框架的基础引导文件(\thinkphp\base.php);
  1) 加载系统常量
  2) 引入loader类 (\think\loader.php)
  3) 引入环境变量
  4) 注册自动记载机制
  5) 注册异常处理机制(\think\Error.php)
  6) 记载惯例配置(\thinkphp\convention.php)
4、运行应用(\think\App.php) 下的run方法;
  1)、第一步: 加载当前控制器中 initCommon() 方法
  2)、第二步: 加载当前控制器中 init() 方法
    a、加载各种配置文件
    b、加载公共文件c、加载语言包
    c、加载语言包
  3)、第三步: 设置时区
  4)、第四步: 加载当前控制器 routeCheck() 方法 路由检测
  5)、第五步: 调用控制器中exec方法,根据用户请求进行分发处理
  6)、第六步: 根据不同请求类型记载对应文件 module方法,加载到对应的控制器和对应方法
5、响应输出
  用户看到的所有界面就加载出来了

Thinkphp设计模式和执行流程的更多相关文章

  1. ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程

    ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/s ...

  2. ThinkPHP中的跨控制器调用与框架执行流程

    一.跨控制器调用 UserController.class.php <?php namespace Home/Controller use Think/Controller class User ...

  3. ThinkPHP 框架执行流程分析

    总体来说,应用的流程涉及到几个文件:Index.phpThinkPHP.phpThink.class.phpApp.class.phpDispatcher.class.phpThinkPHP/Mode ...

  4. angularjs源码分析之:angularjs执行流程

    angularjs用了快一个月了,最难的不是代码本身,而是学会怎么用angular的思路思考问题.其中涉及到很多概念,比如:directive,controller,service,compile,l ...

  5. (一)熟悉执行流程——基于ThinkPHP3.2的内容管理框架OneThink学习

    ThinkPHP作为国内具有代表性的PHP框架,经过多年的发展,受到越来越多公司与开发者的青睐.我也在忙里偷闲中抽出部分时间,来学习这个优秀的框架.在开始学习这个框架时,最好通过实例来学习,更容易结合 ...

  6. angularjs执行流程

    angularjs源码分析之:angularjs执行流程   angularjs用了快一个月了,最难的不是代码本身,而是学会怎么用angular的思路思考问题.其中涉及到很多概念,比如:directi ...

  7. 使用events.EventEmitter 控制Node.js 程序执行流程

    使用events.EventEmitter 控制Node.js 程序执行流程 标题写的可能也不太对,大家领会精神: Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. ...

  8. springmvc执行流程详细介绍

    1.什么是MVC MVC是Model View Controller的缩写,它是一个设计模式 2.springmvc执行流程详细介绍 第一步:发起请求到前端控制器(DispatcherServlet) ...

  9. springmvc的执行流程详解

    1.什么是MVC MVC是Model View Controller的缩写,它是一个设计模式 2.springmvc执行流程详细介绍 第一步:发起请求到前端控制器(DispatcherServlet) ...

随机推荐

  1. 常用命令行指令 Windows & Linux

    一.Linux linux常用命令详解:https://www.cnblogs.com/yuncong/p/10247583.html 挂载U盘到linux一个文件夹中 二.Windows 1.查看电 ...

  2. web服务器-nginx优化

    web服务器-nginx优化 一 并发优化 nginx工作模式: 主进程 + 工作进程 启动工作进程数量 worker_processes 4; #指定运行的核的编号,采用掩码的方式设置编号 work ...

  3. HashMap集合类 5种最佳遍历方式

    1. 使用 Iterator 遍历 HashMap EntrySet 2. 使用 Iterator 遍历 HashMap KeySet 3. 使用 For-each 循环迭代 HashMap 4. 使 ...

  4. Java基础(补充)

    为什么 Java 中只有值传递? 开始之前,我们先来搞懂下面这两个概念: 形参&实参 值传递&引用传递 形参&实参 方法的定义可能会用到 参数(有参的方法),参数在程序语言中分 ...

  5. mysql 实现类似Oracle 或 db2 sequence

    第一步:创建一个索引管理表,其中包含,索引名称.最小值.最大值.当前值.增量,并设置主键为索引名称. CREATE TABLE TB_SEQUENCE ( SEQ_NAME VARCHAR(50) N ...

  6. Mybatis使用拦截器自定义审计处理

    void test_save_1(@Param("relatedBookCategoryEntity") RelatedBookCategoryEntity relatedBook ...

  7. Element-UI资源原型库

    Element-UI v2.0.0版本 Axure和Sketch库: 链接:https://pan.baidu.com/s/1LdsEh8BKQBjcWBKV5yQilQ 提取码:1xqn

  8. 通过pink构造简易部署脚本

    安装git        https://www.cnblogs.com/youxiu326/p/10540753.html 安装maven https://www.cnblogs.com/youxi ...

  9. 如何解决Visual Studio 2017 运行后控制台窗口一闪就消失了

    出现这种情况的原因 安装使用Visual Studio 2017 后,用Ctrl+F5运行程序,结果控制台窗口一闪就没了,也没有出现"press any key to continue-&q ...

  10. 登陆界面回车(enter)点击登陆;

    <script>//注册按键事件document.onkeydown = keyListener;function keyListener(e) {// 当按下回车键,点buttonif ...