php mvc流程图,TP执行流程详解

本文详细解读了TP框架的执行流程,从入口文件到ThinkPHP.php,再到Think.class.php和App类的run函数。作者指出TP中动态加载的类可能影响中小型网站的运行效率,并基于此提炼关键步骤,创建了自己的框架实现。文章最后预告将分享作者对MVC框架的理解和实现思路。
摘要由CSDN通过智能技术生成

###### 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框架及思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值