首先说Model吧。
在TP中是一个表对应一个Model,而且普通Model中只是一些自动验证啊,自动完成啊、还有数据字段信息啊一些东西;而CI中的Model则完全不同,一个Model不必约束于一个表,也就是说名字为abc的Model中你也可以查询名字为def的表中的数据,而且可以定义方法完成一些数据查询,比如我可以在名为articles_model的Model中定义一个名字为get_articles的方法来获取所有文章信息,当某个Controller加载了这个Model后,就可以在相应的Controller中用

1
$this->articles_model->get_articles();

来方便地获取所有文章信息,而对于TP来说,这些操作只能在Action类中完成。2.0版的TP已经把View、Relation和Adv三个高级查询model库类定为不自动加载了,看了一下手册,感觉除了View视图查询容易用一点,另外两个都不怎么好用,感觉用起来太复杂,还不如用原生的SQL查询。CI的Model还有一个使我很喜欢的方法就是dbprefix方法,在使用原生的sql查询时使用这个函数使得修改数据库表名前缀后你的代码不需要经过任何改动。在TP中我没有发现类似的函数,当我用TP开发一个博客系统时,发现关联查询很麻烦,于是想用原生的SQL查询,却没有找到自动增加数据库表名前缀的方法,虽然可以自己修改TP的核心库来实现,但是还是觉得这样有点不太好。真的要感谢TP,如果不是TP,也许我就不会去关注CI了,当我那天看了几页CI的英文文档后,立马就对它产生的深厚的兴趣,于是第二天一起床就开始看CI的手册,虽然是从官网下的英文版的,不过它的手册写得很简洁、很周到,边看边操作,看完手册后我就几乎能熟练使用这个框架了。于是用它开发了一个博客系统。
CI的Model类简单易用,TP的Model类功能相对来说要强大一些,但是用起来个人感觉没有那么方便。

其次,对于View,从功能上讲,TP的View要更加强大一些,选择更多一些,在TP中你可以选择就用PHP作模板引擎,可以就用TP自身的模板引擎,也可以选择用smarty等其它第三方模板引擎。而在CI中就只能用CI内置的功能简单的模板引擎或者用原生的PHP代码作模板,个人觉得用PHP作模板更好一些,一来省去了学习另外的模板引擎语法的麻烦,二来执行效率更高一些。因些从View来讲,选择CI或者是TP都无所谓。

再次是Controller了,在CI中的应用的控制器是继承自核心类Controller的,TP中的控制器则是继承于核心类Action。不过还是有不同的,在TP中,你可以把一些公共的变量或者在多个控制器中都要执行的东西放在一个action里,假如这个action文件为CommonAction.class.php ,在它的_initialize方法中可以执行一些在多个控制器中都要执行的代码或者初始化一些多个控制器都要使用的变量,这样,应用的其它action只要继承CommonAction 就可以实现了。因为框架在加载相应action时首先会自动加载那个CommonAction的。而在CI中就没有这个方便的功能了,但是也可以自己写一个library,在该library类的__construct方法里放一些代码,然后在每个控制器中都加载这个library,这样也可以实现像TP一样的功能。不过相对来说麻烦了一些。TP还有一点比较灵活的就是,在这个控制器(action)里面可以执行那个控制器中的函数(比如用A或者R函数来实现),在CI中则不行,你不能在这个控制器中执行那个控制器中的函数。还有就是TP可以定义一个名为EmptyAction的控制器,当所有控制器都找不到时,就调用这个Empty控制器。这一点如果与empty方法配合,可以使得URL大大缩减。虽然CI和TP都支持空操作,不过这二者的空操作名称不相同,实现的优先级也不相同。在TP中的空操作(_empty方法)优先级是最低的,也就是说当当前控制器的所有操作都找不到时才调用这个空操作;在CI中则恰恰相反,只要存在空操作(_remap方法),该控制器的其它的操作都没用了(不能访问了)。

转载于:https://www.cnblogs.com/rmbteam/archive/2011/10/14/2212067.html

PHP框架 CI与TP之MVC比较相关推荐

  1. php ci框架 实例化类,php框架CI(codeigniter)自动加载与自主创建对象操作实例分析...

    本文实例讲述了php框架CI(codeigniter)自动加载与自主创建对象操作.分享给大家供大家参考,具体如下: CI的autoload很好用,自动创建对象,但是注意,他的对象只有一个. 我们很多情 ...

  2. php ci log,PHP框架CI CodeIgniter 的log_message开启日志记录方法

    PHP框架CI CodeIgniter 的log_message开启日志记录方法 第一步:index.php文件,修改环境为开发环境 define('ENVIRONMENT', 'developmen ...

  3. 设计php框架_利用 Composer 一步一步构建自己的 PHP 框架(三)——设计 MVC

    利用 Composer 一步一步构建自己的 PHP 框架(三)--设计 MVC 2014-10-14 / 阅读数:50438 / 分类: PHP 终于可以 "一次编写,到处发布" ...

  4. php ci laravel,PHP 框架 ci 和 laravel 的问题

    我们用 laravel 或 ci 框架中的数据库配置,然后在每个控制器中取出数据.这样是不是和每个原生 php 单页写一个 mysql_contact ,就是每个页面都要连接数据库一次.本质是不同的, ...

  5. 【手写系列】写出我的第一个框架:迷你版Spring MVC

    你没有看错标题,今天,我将实现我人生中第一个框架,^_^ 前期准备 我这里要写的是一个迷你版的Spring MVC,我将在一个干净的web工程开始开发,不引入Spring,完全通过JDK来实现. 我们 ...

  6. php怎么实现简单的mvc框架,php实现简单的MVC框架实例

    这篇文章主要介绍了php实现简单的MVC框架,较为详细的分析了php实现MVC框架的相关实现技巧与注意事项,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php实现简单的MVC框架.分享给 ...

  7. java mvc建包结构_Java SSM框架的配置方法、MVC结构的分析、响应的流程

    今天头一次配置成功一个SSM框架,兴奋之余,还应该从使用的角度,将整个ssm配置的方法,配置的原因,认真的分析一下.在结束了对SSM框架简单的分析之后,就要开始回归基础,全面的认真复习.所以这个文档, ...

  8. SSM框架笔记13:Spring MVC基础

    vitalflux.com对2014-2015年度10佳Web框架排名, 没有Struts2的身影,前五名为: 1.Spring MVC 2.Grails 3.Play 4.Spring Boot

  9. php实现简单的框架,PHP 实现简单的 MVC 框架

    前言: 在 PHP 的世界中,有着众多的框架,它们各有所长,各具特色.既有 Zend,Symfony,Laravel 等大型框架,也有 CodeIgniter,Slim Framework 等轻量级的 ...

最新文章

  1. Emojify - v2 吴恩达老师深度学习第五课第二周编程作业2
  2. 【c++】22. STL容器的底层实现详解
  3. 花生问题——百练OJ:2950:摘花生与1928:The Peanuts
  4. CodeForces - 1370D Odd-Even Subsequence(二分+思维)
  5. C++实现MD5加密
  6. 程序员界大杯具:蜗居中的小贝是搞C++ 的 !
  7. Unity3D实习生面试题总结-图形学相关
  8. 如何从零设计结构清晰、操作友好的权限管理模块
  9. 天猫商城多幅图片并排展示广告效果,鼠标指向高亮其它阴影
  10. 鸡兔同笼编程语言c,鸡兔同笼用c语言编程
  11. SQL Server 2008 R2每天自动备份数据库
  12. Python自动化填写问卷星问卷
  13. Could not clean server of obsolete
  14. UVALive - 4636 Cubist Artwork——思维
  15. 携职教育:四川2022年人力资源管理师考试报名通知
  16. 小程序验证:人的男女偏见对出生性别比例平衡的影响
  17. 多元统计分析——各类图的具体应用(数据可视化)
  18. Abaqus用python读取.odb文件
  19. 复爱合缘发布《白皮书》 传统恋爱仍是主流
  20. 推广都需要哪些工具?这几款工具可以轻松提高推广效率

热门文章

  1. 宿命传说2之女神召唤java_宿命传说2-女神的召唤
  2. java利用redis实现排行榜_Java简单使用redis-zset实现排行榜
  3. oracle手注,oracle手注
  4. C语言学习笔记---字符读取函数scanf()、gets()、fgets()
  5. Filter过滤器拦截方式
  6. NYOJ-水池数目(bfs)
  7. apt报错Hash 校验和不符解决办法
  8. 梯度下降和delta法则
  9. java 语言实现随机数
  10. python __call__或者说func()()的理解