PHP
发布时间:2022-04-04 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了thinkphp3.2框架运行原理,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
673_0@think
PHP3.2是使用率非常普遍的国产
PHP框架,以简单易于上手闻名,那么它框架结构是怎样的?
@H_
673_0@tp3.2设计简单来说就是CBD,core(框架核心
文件),bebavior(行为,tp3.2一大特点就是钩子众多),driver(各种驱动,根据项目需要),针对这三大方面从源码来看框架的运行的原理。
@H_
673_0@因为tp3.2的古老,所以入口
文件没有像5.0和其它主流框架那样做动静分离,index.
PHP直接放在根目录下,打开index.
PHP,里面有引入框架核心
文件从而进入框架:
@H_
673_0@
@H_
673_0@然后打开框架核心
文件:
@H_
673_0@首先看到的是定义的一堆系统常量,
包括规定了类名后缀必须是.clas
s.PHP结尾,最后引入并且运行了框架应用,从这里框架逻辑正式开始。
@H_
673_0@
@H_
673_0@接着,打开核心Think核心类,首先异常捕捉处理,
@H_
673_0@register_shutdown_function,set_error_handler,set_exception_handler三段式,基本每个框架都会有。
@H_
673_0@接着是加载缓存
文件
@H_
673_0@tp里
文件运行先以缓存临时
文件为主。
@H_
673_0@接着是最关键的一步,引入框架核心
文件
@H_
673_0@这里引入叫commo
m.PHP的
文件,这里面是预先定义的一些需要框架加载时就引入的
文件,驱动,行为,甚至核心
文件都有。
@H_
673_0@
不过在tp5和tp5.1这些核心文件都实现了依赖注册函数的惰性加载,性能有所提升。
@H_
673_0@
@H_
673_0@然后是
注册函数加载不需要初始化的
文件,比如model,controller,部分驱动,这些
文件可以在实例化的加载。
@H_
673_0@然后运行应用:
@H_
673_0@接着,打开应用程序类, 查看执行应用过程管理,
@H_
673_0@首先是对
http请求方式进行处理,过滤
@H_
673_0@然后根据请求的路由规则,
调用相应的控制器,控制器作为请求的入口,几乎所有框架都这样,tp也不例外。
@H_
673_0@这里根据提交请求的参数
名称实例化
相应的控制器,然后
调用相应的方法
@H_
673_0@不过这里
做了一个参数传递校验和过滤,个人觉得不是
一个好的设计,导致不能在控制器里直接使用形参,会让开发变得麻烦,例如为了避免动态
方法调用的繁琐,通常可以直接注入(
request $
request)
@H_
673_0@
@H_
673_0@通过反射的放射,处理控制器的参数,限制了只有传参,并且可以
自动将
http参数赋值给控制器形参,不过这种设计在tp5中被废除。
@H_
673_0@进入控制器后就可以进行逻辑
代码编写了,值得一提的是,tp3.2模板引入还是依赖直接
输出,中断下面
代码执行的display,到了tp5则和yii2,lavarel一样改为return,将控制器
方法作为
一个中间处理过程,最终
输出到浏览器还要进行统一灵活的数据处理。
@H_
673_0@
链接:
https://www.jianshu.com/p/e48c17bff7e4
大佬总结
以上是大佬教程为你收集整理的thinkphp3.2框架运行原理全部内容,希望文章能够帮你解决thinkphp3.2框架运行原理所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。