php框架源码学习中的收获
thinkphp框架
1.有用的标准函数 与 标准类
array_walk_recursive
memory_get_usage
is_callable
preg_replace_callback 用于路由替换
Reflection 获取对象信息类
Exception 异常处理类
extract
parse_url 用于路由处理
parse_str 用于路由处理
ucfirst
explode 的第三个参数
pathinfo 第二个参数
realpath dirname dirname 路由处理
2、设计思想
1、分层结构化
模块模块的之间的独立,控制器可以多层设计;让人感觉和什么分页分段等思想差不多
当“一大块“逐渐变得臃肿与遇到瓶颈时 就是分块、分页、分段吧
2、配置化
在应用场景比较丰富的可能性的时候要有参数配置化的思想,这不关在维护,扩展或者是工程量上都很好的选择
3、一个基本的框架至少应该包括DB处理、路由处理、缓存、公共配置、公共类以及函数库、MVC架构、安全、调试等模块
4、驱动思想与行为钩子设计思想
驱动思想可以更好的进行扩展 各个驱动就像计算机的外围设备一样 每个设备需要不同的设备驱动
钩子就是一种事件监听的机制 在某些时刻触发某些行动 当女朋对你说不的时候 你就要触发你的手与身体将其按住。。。
5、数据库的ORM设计,tp只是用了类似_call等函数以及一些判断实现了很简单的非标准的ORM模型
框架的逻辑并不复杂,源代码很容易就能够理解,最大的特点在与灵活的配置,似乎是想用配置解决所有问题,哈哈。应用模式、模块、控制器 ,URL 路由、缓存、数据库,数据处理等都可以自定义配置
代码量很小且使用起来非常灵活 伸缩性(自创描述,表达其既可以快熟开发小型项目,也能适应中等规模的系统的意思)很强
框架的比较应该从应用本身的需要来评判 ,每个框架都有特点与优势,没有最好,只有最合适。要去研究的话可以找特点明显的框架来研究 比如CI, lavarel, swoole ,去看看他们在我上面说的设计思想中第三点中那些点是怎么去处理的………
此处说说TP在缓存以及安全方面都做了什么,因为这两方面是一个高效而健壮的系统中比不可少的部分
缓存方面
实现了数据缓存,静态缓存,查询缓存,sql解析缓存以及快速缓存,在数据缓存方面支持redis,file,memcache等缓存方式,可以实现简单的数据结构缓存 ,在大型系统中,需要缓存更为复杂的数据结构,需要自己对缓存的驱动文件做一些扩展。我认为这些缓存技术能够满足一般的系统了。
安全方面
实现了上传过滤,文件目录安全,xss过滤,通过预处理以及PDO的方式防止sql注入,输入过滤,令牌验证,表单检测等功能。。由于自己对于安全方面的研究还不够深入,对于tp提供的安全措施是不是已经很全方位的稳固有待继续研究。。。