thinkphp与onethink

thinkphp与onethink

在项目开发中,一些架构和代码都是重复的,为了避免重复劳动,于是各种各样的框架诞生了。   在PHP开发中,选择合适的框架有助于加快软件开发,节约宝贵的项目时间,让开发者专注于功能的实现上。由于流行的框 …

2014-11-10

在项目开发中,一些架构和代码都是重复的,为了避免重复劳动,于是各种各样的框架诞生了。
 
在PHP开发中,选择合适的框架有助于加快软件开发,节约宝贵的项目时间,让开发者专注于功能的实现上。由于流行的框架经过了大量项目的检验,所以使用框架还有助于创建更加稳定和安全的应用程序。
 
ThinkPHP框架 – 是由上海顶想公司开发维护的MVC结构的开源PHP框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。早期的思想架构来源于Struts,后来经过不断改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,单一入口模式等,在模版引擎、缓存机制、认证机制和扩展性方面均有独特的表现。

优点
 
1.容易上手,配置、部署方便
 
2.编译缓存机制有利于性能提升
 
3.内置了对REST的支持
 
MVC和OO啥的就不说了…
 
缺点
 
1.麻烦的URL路由
 
正常模式:
URL -> URL路由 -> 将从URL解析得到的参数和请求传递给入口函数
 
TP的实现(以正则路由为例):
 
正则 -> 入口文件 + 动态参数
如:'/^blog\/(\d+)$/' => 'Blog/read?id=:1'
 
简洁的实现:
 
'/^blog\/(\d+)$/' => read // function read($id) {…}
 
此实现便于检查路由规则与入口函数的匹配性并使用户更加方便的使用解析后的URL参数,同时,TP的入口文件设计本就是多此一举。
 
2.糟糕的模型设计
 
*1 需要手动建立模型与数据库的关联
 
缺点:需要进行一系列不必要的配置,与定义模型后自动生成数据库表的行为相悖。
 
*2 对数据库的抽象远远不够
 
操作模型时有很强烈的操作数据库感觉,同时由于 2*1 需要手动建立模型与数据库的关联 这一缺点,毫无必要的字段映射让人恼火。
 
3.垃圾的模板引擎
 
*1 不支持模板继承
 
重复写代码很累的亲!
 
*2 XML格式的模板标签
 
书写不便,同时容易与HTML标签混淆(最近几年出现的模板引擎已经很少有用XML标签的了…)
 
*3 不适合前端书写
 
模板 + 数据 -> 渲染输出
 
模板由前端书写,数据由后台提供,显然TP的模板对此支持并不好。
 
*4 不支持模板的部分缓存
 
缺点:假设页面P由A, B两部分组成,A的更新频率大于B,则页面P的更新频率与A相同。
OneThink是一套简单,易用,面向开发者的内容管理框架(CMF),帮助开发者节约web应用后台开发时间和精力,以最快的速度开发出高质量的web应用。