问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php的tp框架和mvc有啥区别?

发布网友 发布时间:2022-04-24 07:53

我来回答

3个回答

热心网友 时间:2022-04-06 02:49

首先说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方法),该控制器的其它的操作都没用了(不能访问了)。

热心网友 时间:2022-04-06 04:07

Model 是模型,Controller 是控制器,两者是没有什么关联的,Model 层只是在 Controller 中被使用,可以完全自己实现一个框架,很简单,这有一个视频教程, 手把手教你实现自己的MVC:
http://v.youku.com/v_show/id_XMjYzODEyMjQ2MA==.html

热心网友 时间:2022-04-06 05:42

楼下的说的太多了,我总结一下吧:
TP框架(怕你不知道,我说一下全称,知道就略过吧:ThinkPHP)的思想就是MVC,MVC是一种结构了。
这里的M就是Model,主要用于数据库的操作。
V就是View,主要用于HTML、CSS这些的静态语言,再结合一些从后台传过来的数据形成我们能看到的网页页面。
C就是Controller,是他们的指挥官,可以调用Model里的函数,也可以调用View里的东西(这真不是函数,也不知道该怎么说,就说是东西吧)
相关的MVC模型的PHP框架还有很多呢,当然其他语言也是存在这个模型的框架的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...为什么老是进游戏按了F9打完再按F9在文件夹都没有东西捏 为什么我在游戏里用fraps按f9不显红字弹出一个框框,里面全是英文看不... 为啥别人玩穿越进游戏的时候都会有个女的说按f9 即可录制本剧游戏我的确... lol在游戏时问什么出红的框按f9不管用 为什么你们进游戏就会出现按不按f9什么的 就是 点击左侧录制按钮 即可... 使用SPSS进行T检验与单因素方差分析 spss单因素方差分析数据如何录入? 关于人安静淡然句子 熟悉广州地铁路线或者公交路线的帮帮忙!!! 广州路线的帮帮忙<急> 如何入门一个PHP MVC框架 php mvc框架 为什么要用mvc框架! - PHP框架开发 PHP你如何理解 MVC 模式? 什么是MVC以及PHP怎样实现MVC 有时候会控制不住自己的情绪怒吼小孩,这样会对孩子有影响吗? 当孩子做错事妈妈控制不住自己的情绪对孩子打骂教训后,又该怎么安抚他们? 我总是忍不住朝孩子吼叫,甚至会打孩子,该怎么办? 总是控制不了情绪打了孩子怎么办? xp系统启动蓝屏 有时孩子不听话时会忍不住打孩子,我该怎么控制自己? 每当看到宝宝不听话.控制不住自己的情绪想打他怎么办 教小孩做作业、老是控制不住自己的情绪、打骂孩子、说伤害孩子的话、好烦这样的自己 经常控制不住自己的脾气打孩子骂孩子怎么办呢 打孩子老是往死里打控制不住自己的情绪怎么办 我总是控制不好自己的情绪,老打孩子怎么办 总是控制不住情绪打孩子,怎么办 我总是控制不住自己情绪,要打骂孩子怎么办 控制不住自己情绪,要打骂孩子怎么办 好寓意的销售团队群名有哪些? php怎么实现mvc? PHP 的哪个 MVC 框架值得推荐 什么是THINKPHP 和 MVC的概念 PHP常用的mvc框架有哪些 PHP的MVC框架哪一个性价比最高 php中laravel和mvc是什么意思 php中MVC的开发模式如何去理解? 地瓜与苹果放在一起地瓜坏是什么原因? 红薯可以和苹果可以一起吃吗 请问红薯可以和苹果一起吃吗? 红薯可不可以和苹果一起吃吗 苹果可以和红薯一起吃吗? 红薯粥里可以放苹果吗 英派斯健身年卡是否全国通用? 英派斯健身年卡多钱,有知道的吗 济南英派斯健身年卡多少一张? 龙江英派斯年卡多少钱 长春英派斯健身年卡多少钱? 去英派斯健身,年卡是每次都要刷,还是给看一下就好了?另外年卡上有照片吗有姓名吗? 全国计算机技术与软件专业技术资格(水平)考试初级程序员要看什么书...