thinkphp框架使用心得

接触的第一个PHP框架就是TP,在使用的了一段时间后就放弃了,说实话TP的弊端挺多,之后又接触laravel框架,慢慢的就爱上laravel这个框架了。这段时间由于公司的原因,又不得不使用thinkphp框架,在这里分享下使用心得。

TP框架这一块,框架的耦合度高,整体代码半面对对象半过程化,整体使用起来不够方便,语义化很差;TP的默认路由还算不错;MVC这一块,控制器和应用请求、视图耦合度很高,几乎没有对请求进行封装,视图模板不支持深层次的继承,模板标签太多不够简洁(虽然每个标签都有最适合的应用场景),模型这块没有独立的查询构建器,而这一部分的职责基本由Model和DB类共同承担了,关联模型这块没有提供很好的预载入功能,存在N+1的问题;TP没有提供丰富的服务层代码,也没有明显的服务层概念,控制器之间的功能共享除了继承没有更好的方式;TP对于错误处理是通过返回值一层一层迭代的,而不是使用异常,程序越复杂,职责约分离迭代次数就越多

表单验证心得:

TP没有提供请求层的封装,请求通过路由直接进入控制器,并且TP的验证服务也是直接硬编码到Model里面,并通过create方法触发,create方法会完成数据字段的过滤,别名处理,验证处理,和自动填充等,由于实际情况中很多时候我们的表比较复杂,表中很多字段并不需要客户端的数据提交,例如:创建时间、状态、操作用户等等,那么只使用create方法做过滤是不够的,这个时候这个任务就会交给控制器去做,控制器中的每个方法对应前端用的一个用户请求,秉着客户端的提交都是危险的,那么在这里我们需要对提交的参数进行筛选。

总结:控制器中做提交参数的筛选,然后由模型来做数据验证

在laravel中有独立的请求层,并且验证是独立的服务。

客户端请求通过路由进入控制器,在进入控制器之前,laravel会通过参数的类型约束,利用反射技术来获取当前请求的实例,并根据请求定义的验证规则,调用验证服务,如果验证不通过则报一个系统异常,laravel会捕获这个异常并作出相应的处理,也就是说如果用户请求不符合规定,这请求都无法进入控制器

在这里并不是拿thinkphp和laravel做对比,因为他两压根就没有可比性,在这里只是说说别人的设计思路,这个真的很好

时间: 2024-10-10 15:58:04

thinkphp框架使用心得的相关文章

thinkphp框架的路径问题 - 总结

thinkphp框架的路径问题 - 总结 (2011-06-21 11:01:28) 转载▼ 标签: thinkphp 框架 路径 杂谈 分类: Php TP中有不少路径的便捷使用方法,比如模板中使用的__URL__,__ACTION__等,如果你对这些路径不是很明白,用起来说不定就会有这样或那样的问题,抑或出了错也不知道怎么改,现在我们看一下这些路径到底是代表了什么吧!假如你项目首页的URL是:www.test.com/other/Form假如当前模块是:Index假如当前操作是:index那

ThinkPHP 框架模型

本文和大家分享的主要是ThinkPHP 框架模型相关内容,一起来看看吧,希望对大家学习php有所帮助. 1 在MainController.class.php 控制器中有一个test的方法,同时还有一个deng的方法,我想在test方法中使用deng方法 表示为 <?phpnamespace Home\Controller;use Think\Controller;class MainController extends controller{ public function test() {

ThinkPHP框架系统源码解析——URL路由解析

1 一.ThinkPHP框架目录 2 /test/index.php //项目入口文件 3 /ThinkPHP/ThinkPHP.php //框架入口文件 4 5 Common 框架公共文件目录(函数库) 6 ThinkPHP/Common/runtime.php //框架初次运行文件 7 ThinkPHP/Common/common.php //框架基础函数库 8 ThinkPHP/Common/functions.php //标准模式公共函数库 9 10 Conf 框架配置文件目录 11 T

ThinkPHP框架里隐藏index.php总结

本文所写的配置在ThinkPHP3.2.2上测试过.按理也兼容其它版本.如果你正在学习ThinkPHP框架,一定能有所收获. 首先修改配置文件: 'URL_CASE_INSENSITIVE'  =>  true,   // 默认false 表示URL区分大小写 true则表示不区分大小写'URL_MODEL'             =>  2,       // URL访问模式,可选参数0.1.2.3,代表以下四种模式: // 0 (普通模式); 1 (PATHINFO 模式); 2 (RE

ThinkPHP框架快速开发网站

使用ThinkPHP框架快速搭建网站 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.如果对于同样是Web方面新手的你有一丝丝帮助,那就更好了挖. 以前用PHP做过一个很蹩脚的网站,为什么这么说呢,因为写的全是死代码.做完以后觉得实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼.所以,在接到做网站的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟以前一样那么累了. 我选择的是PHP

关于Thinkphp框架模型应用过程中出现的错误Undefined class constant MYSQL_ATTR_INIT_COMMAND

今天在用thinkphp框架做网站的时候,在调用model模型是意外发生Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]错误, 下面是我百度的结果,大部分说解决问题可以分为以下两类: 1. windows下iis7.5+php5.4.11(FastCGI) 缺少pdo,编辑php.ini 取消注释: extension=php_pdo_mysql.dll 重启iis PHP数据对象(PDO)扩

ThinkPHP框架的部署

1.将ThinkPHP框架的框架文件放到想要放置的地方,与创建的应用文件夹同级 2.vhost文件中设置虚拟目录 3.在hosts文件中配置 4.在应用目录中创建入口文件index.php 5.在入口文件中引入框架 6.从浏览器访问入口文件 7.应用中自动生成相关文件

ThinkPHP框架基础回顾

首先,我们必须要知道的就是目录结构: 我们把解压完成之后会出现以下的目录: 这是tp官方的手册目录解释,我们可以先不要去看其他的文件,这里,我们主要用到的就是php的核心库ThinkPHP框架目录: 然后在这个非常主要的目录下面,又有如下的文件目录对我们是同样的重要: 这个就是tp的核心目录了,接下来就是关于入口文件了,显而易见,这个入口文件就比zend框架的入口文件好找多了,那么这个入口文件其实在解压目录的表面就已经给我们了,我们可以直接使用它,当然也可以自己去写,就是那个index的文件,千

学习ThinkPHP框架必须了解的知识点(一)

1.框架:有大量的类.方法.函数按一定的逻辑组成的集合: 2.MVC(Model-View-Controller):即模型-视图-控制器这种编程模式:  M->Model:实体层,它主要是对数据库的操作:每一个Model.cs文件对于一张数据表,和它相应的数据库库操作:  V->View:视图层,可以简单的理解为模板,主要是展示作用:  C->Controller:控制层(控制器),对数据进行分析.过滤:它向上连接视图层,向它提供从数据口读取的数据,向下连接实体层,控制数据的读取.  M