Home  >  Article  >  Backend Development  >  thinkphp与yii 哪个更优秀,分别是哪些方面优秀?

thinkphp与yii 哪个更优秀,分别是哪些方面优秀?

WBOY
WBOYOriginal
2016-06-06 16:45:041666browse

php 框架

回复内容:

关于tp和yii的比较,首先一点是,yii和tp不是一个等级的东西(知道赛亚人和超级赛亚人的区别么?),另外,个人特别反感tp,有个很大的原因就是,tp太自以为是,做了很多方便国人的事,打个比方,有个猪肉老板卖你猪肉,你要一斤瘦肉,他给你两斤骨头一斤肥肉一两瘦肉,这就是tp,而yii就是隔壁的老板,你要一斤瘦肉,他就给你一斤。yii用配置和组件等方式的效果是,你要什么他就给你什么(重点是你会不会配置,所以难学),tp就是什么都弄好了,看起来什么都好用,实际上层次被别人拉了好几个等级 thinkphp和yii不是一个量级的东西…… 谢邀
---------
先说结论:yii更优秀,而且要比thinkphp优秀很多。
要回答分别是哪些方面优秀我们先要明白,框架是用来干什么的。
框架的作用:1、简化开发。2、提高工程的可维护性。3、规避编程语言本身的坑和陷阱。
那么我们就从这3个方面来讨论下着二者的优劣。
1、简化开发方面:从新手的视角来看(或者表面来看),thinkphp做项目更简单,因为其一提供了大部分web开发常用类库,其二中文手册写的很详细。但事实上,thinkphp有两个缺失的特性导致一旦项目做久或者稍微上规模,就会使人头痛不堪,这缺失的两个特性分别是:完整的AR支持以及完善的多层次模型
其次,web项目开发中大部分代码都是重复的,因此自动化代码生成工具是必不可少的,截至最新的tp3.2.3,我仍然没看到tp对自动化工具有任何支持的迹象
2、可维护性,缺失了完整的AR和多层次模型,代码不可能工整到哪里去,代码一多,源代码必然跟面条一样杂乱。最重要的时,TP没有unitTest,这导致重构都无门。同样,数据库方面,tp缺失了数据迁移工具,这都导致了项目后期维护由很大困难
3、规避编程语言本身的坑和陷阱:tp和Yii都是由PHP做的实现,PHP本身有很多的坑和陷阱,诸如混乱的语言结构与函数傻傻分不清的关系,变量转换的陷阱,凌乱不堪的类库命名。这些在yii里基本都得到了改善,Yii完全用面向对象的方式构建,常用web类库都以组件方式呈现,终于改善了PHP程序员边写代码边百度:‘XX功能该用哪个函数’的情况。反观TP,仅仅对常用类库封装成class,要用什么取什么,根本没做过精心的设计,完全像是一个多年的程序员攒了些类库,然后七拼八凑而成的一个框架,因此我常常说,thinkphp是个伪MVC框架。
-----------------------------------------------------
说在最后的话:
以上我吐槽了诸多thinkphp的坏话,但事实上,从生产环境来说,thinkphp是完全合格的,目前国内的大部分项目都构建在TP上。从运行实践来看,TP完全符合生产标准,用户量也最大。题目问tp和Yii那个优秀,自然是yii优秀,这就好比,python无论从哪方面看,都比php优秀,但是用的人就是没php的多一个道理 整体说起来yii比较好,优点在于轻量级,缓存做的不错,有很多实现方法很好的避免对php扩展的依赖,执行性能比TP高,等等。
当然,TH也有自己的有点。例如,社区很火爆,中文的新手教程很详细,比较容易上手。缺点也很明显,例如BUG多。。。。 没玩过ThinkPHP, 至少Yii2的国际化做得好些,ThinkPhp 的本土化好些。

首先,如果有人认为我们应该无条件支持国产:
支持爱国者相机,新机必装360安全卫士,上网默认百毒搜索,生病只看中医,喜欢国产新闻客户端的默认推荐,去鸡血论坛,看人民艹报和环球屎报,从来不翻墙,坚决抵制日货……
那么我觉得这种人可能不适合编程这个行业。

至于差别嘛,首先一点其实是很容易被忽略的,也就是影响力,国际上有名的 Framework benchmark 是不会考虑 ThinkPHP 的。各方面的资料很不好找,国内技术贴的质量和数量都很难和全世界相比。国际上最知名的技术问答网站 StackOverFlow 上也是没有 ThinkPhp 的。

当然如果国际化需求为零,自己英文也不是很好,那么 ThinkPHP 未必是坏选择。尤其是开发人员都是国人,也没有外国以及本土大客户的情况下。而且应用Composer 之后,理论上支持PSR标准的,框架组件都是可以混用的。而 Yii 的一点点优势只是在于有核心开发者是 PSR 的出品方,PHP 框架协作组织的成员。

对于技术选择,唯一的忠告只有,不要为你支持的技术站台,而是客观比对他们是否适用于当前的应用场景。最简单的例子莫过于 NoSQL 了,选择哪种数据库取决于应用场景。有些工作其他的的数据存储方案不是不能做,而是有更适应场景的方案。所有方案都用 MySQL / MongoDB / Cassandra 才是问题所在。同理如果你喜欢轻量 RESTful 后端+重前端的设计,你可以选择用micro-framework,比如Slim framework 或者 selix。如果你对性能要求很高,你可以选择用Micro-ORM,而不是ActiveRecord,而如果业务很复杂,我觉得可能 ActiveRecord 也不够用了,必须用DataMapper 甚至 Repository Pattern. 任何框架都绝不敢说覆盖100%,既做不到,也没有必要。

Laravel / Symfony 其实也是值得推荐的,前者的语法糖很棒,拥趸也很多,后者及其灵活,作者在 PHP 界也很有名。
只是他们有的时候不太在乎性能之类的。 这种“A和B哪个好”的问题都是无稽之谈,永远记住一点,不管什么东西,适合自己的才是最好的,比如你就想做几个简单页面,那任何框架都是多余累赘!没一个好的,望LZ意会。。 两个都用过。如果想快速招到人,招的人水平不用太高,来了不麻爪。选tp没错的。反之yii lavara symfony 都可以 yii非常强大。thinkphp,多看上两遍源码你就搞懂了。我现在直接就是拿thinkphp来作为类库。就是说一些常用方法,就直接从thinkphp里面copy出来。。。省的自己网上找了。。。
非常建议你学习一下yii。非常的棒。他的缓存非常的好。 建议你用用ThinkPHP5在说吧 我看了好多个对比贴,总结了一些


tp好,国内很多人用,快速开发,易用易学,他的意思是在说,他学tp的
yii好,外国的,逼格自然高,层次自然高,他的意思是在说,他学yii的

个人感觉,tp和yii都行,两者用的人都很多,文档也多,就不要去学其它框架了,比如ci什么之类,其实我的意思是在说,我tp和yii都有学
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn