热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpmvc流程图,TP执行流程详解

######TP执行流程详解####TP执行流程我查看了TP的核心源码,下面是我对TP执行的一些理解(从入口开始,只是一个大概流程):1.入口文件&#x

###### TP执行流程详解

#### TP执行流程

我查看了TP的核心源码,下面是我对TP执行的一些理解(从入口开始,只是一个大概流程):

1. 入口文件:

单入口文件,里面包含TP的入口文件,``require './ThinkPHP/ThinkPHP.php';

有多个模块的话也可以定义多个入口,(比如对于后台模块,再新建一个admin.php)

2.TP入口文件ThinkPHP.php

1. 记录运行时间(钩子),用于输出日志和调试,个人认为没什么用.........

2. 定义系统常量:URL模式、类文件后缀、当前文件目录、系统运行目录、是否调试模式、缓存目录、模版目录、配置文件目录....等等,然后引入核心Think类``Think.class.php`` ,引入后执行这个类中的start函数

3.Think.class.php类以及start函数

1.在start函数中,先定义注册函数,然后定义错误和异常处理函数(spl_autoload_register用于自动加载未加载的类,register_shutdown_function定义PHP程序执行完成后执行的函数,set_exception_handler是自定义异常处理函数,这三个函数的参数都是一个方法名,当自动加载、执行完成、出现异常的时候,将用这里面传的方法参数代替php原本的处理机制,比如 set_exception_handler('Think\Think::appException'); 出现异常的时候会调用appException函数,而不是PHP原生的异常处理函数)

2.加载各种文件:核心文件、配置文件、模式别名定义、模式行为定义等

3.设置系统时区

4.调用App类中的run方法

5.这个类中的其他函数就是在第一步中说到的自定义加载、处理函数,(自定义加载中用到了类名映射,就是从当前url中解析出模块名、控制器名、方法名,)

4.App类以及run函数

1.run函数中先执行监听(钩子类中的)函数监听init方法

2.执行init方法(加载动态配置、安全过滤等);

3.再执行钩子类监听函数,监听begin方法,设置session,获得到应用执行时间

4.执行exec函数(去寻找从url中解析出的类,并将其实例化后调用方法,输出结果)

5.执行监听函数监听end函数(应用结束);

这样整个执行流程就完毕了 ,我看了好几天...挺难懂的,而且我觉得TP中要动态加载的类太多了,对于中小型网站来说,用不上,反而影响运行速度,然后我把这个执行流程里面比较重要的部分挑出来,写进了我的框架中,里面的大部分函数名与TP相同,但是完全是我自己用代码实现的,并没有用TP的思路。下一章会详细讲解我自己理解的MVC框架及思路。



推荐阅读
  • PHP函数的工作原理与性能分析
    在编程语言中,函数是最基本的组成单元。本文将探讨PHP函数的特点、调用机制以及性能表现,并通过实际测试给出优化建议。 ... [详细]
  • 驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • 本文详细记录了腾讯ABS云平台的一次前端开发岗位面试经历,包括面试过程中遇到的JavaScript相关问题、Vue.js等框架的深入探讨以及算法挑战等内容。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 解决Win10 1709版本文件共享安全警告问题
    每当Windows 10发布新版本时,由于兼容性问题往往会出现各种故障。近期,一些用户在升级至1709版本后遇到了无法访问共享文件夹的问题,系统提示‘文件共享不安全,无法连接’。本文将提供多种解决方案,帮助您轻松解决这一难题。 ... [详细]
  • 本文探讨了如何在Docker构建过程中使用动态环境变量,特别是针对Docker v1.9及以上版本的用户。我们将介绍如何声明和使用构建参数,以及这些参数对构建缓存的影响。 ... [详细]
  • 本文探讨了使用lightopenid库实现网站登录,并在用户成功登录后,如何获取其姓名、电子邮件及出生日期等详细信息的方法。特别针对Google OpenID进行了说明。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
author-avatar
Cyndi丶先生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有