为什么国内有不少PHP程序员不喜欢THINKPHP,甚至鄙视THINKPHP?

为什么国内有不少PHP程序员不喜欢THINKPHP,甚至鄙视THINKPHP?

阅读 118.3k
37 个回答

自古文人相轻,程序员更甚,所谓的鄙视不是简单的链条或循环,而是密密麻麻的有向图,什么技术都有人鄙视

我的看法是技术是有适用场景的,什么样的业务,什么样的硬件,包括公司已有什么样的开发人员,什么样的开发人员市场上容易招聘等等各种因素都会影响到技术选择

就比如说“世界上最好的语言”,其古怪程度确实罄竹难书,有篇知名博文用两头都是起子的锤子来描述并不为过,但只需要“人好召,环境好配,运维简便,性能过硬” 两头都是起子的锤子也至少能在市场占有方面完爆很多竞争对手。市场是不会说谎的,用的人多的技术一定有它的优点

作为负责技术选型的lead programmer,必须综合考虑所有的因素来选择对公司最合适的技术,而非争个人喜好或是仅靠单纯的某个方面做出选择

而一旦某个项目技术选型确定,或者是你加入的是已经成熟的项目,那么吐槽已定的技术栈就没什么建设性了。这时候适应已有的思维带着镣铐跳舞才是正道,当然如果能够融合其他技术栈的思想来弥补现有技术栈的一些缺陷就更好了。

说回thinkphp的话,我最近否决thinkPHP的理由和否决Laravel的大致理由是一样的:我不需要全功能的框架


PS,少数纯攻击性的回答已踩不谢

  1. 问题是好问题。我觉得,提问者应该拿出证据,哪些引用曾说过不喜欢thinkphp。

  2. 认识的人中,除了喜欢的,剩下的说不上喜欢,但没有出现不喜欢,更别说鄙视了。

  3. thinkphp算是一个适合中小型项目的框架,看项目需求吧。鄙视说不上吧。

++++++++一下是追加内容++++++++

真对某些论点 提问如下

  1. 不是教人写不规范的代码是@空山鸟语所说的 .class.php结尾呢, 还单单只是D,M,C,U,F.还是controller,还是model,还是驼峰?我相信thinkphp的命名规范是借鉴了很多其他框架的命名方式,至少zf2还有cakephp都是有各自的命名规则的,因为框架需要根据这些命名规则去加载。那您说的规范是怎样的标准规范。是PSR-0,PSR-1,PSR-2和PSR-4。
  2. 不是教人懒惰。只是因为D,M,C,U,F呢,还是“路由是什么?”,还是“需要多写一个return”。我的观点是:

a.框架肯定是抽象一些常用操作的,必定是简单和易用的。这不是框架的错,那php解释性语言,弱类型,垃圾回收,哪一样不是抽象过的,所谓的“教人懒惰”。

b."路由是什么?",相信无论是thinkphp的手册和ci的手册和cakephp的手册(我都看过)都是有的,这是那个程序员的的问题。

c."需要多写一个return",我相信thinkphp还没强大到可以不写这个"return"

@十三 别把你的无知当初光荣的表现
@hoosin 请不要把 thinkphp 这种垃圾跟JQ相提并论
@yearnfar 请别侮辱优秀这两个字 (他的商业模式是很优秀,跟培训公司合作培训一群垃圾,这鸟公司商业模式是很优秀)
@batsing 看完你发言发现你不但无知,还蠢.PHP语法目前一直像JAVA靠近.麻烦你深入理解下什么交OOp 无知不是你的错,无知还出来显摆就是你的不对了.

一一分析:
什么叫MVC THINKPHP 的MVC完整吗?
什么叫路由 THINKPHP 那玩意能叫路由么,做个简单的匹配就交路由? 那干脆在服务器重写得了
什么叫OOP THINKPHP 能交OO的代码吗? 写个类就交OO啦?
面向过程?估计就用到个类,面向函数?还硬要凑上几个简单的设计模式.啥玩意啊.
一个到处抄 抄的四不像的玩意,还好意思拿出来扯蛋.

还有SB说 "从来都有一种工具鄙视链叫做国外的好"

麻烦你放大你狗眼 YAF(鸟哥) 去看看人家的实现.这个也是国人.

看的来气.一群无知还拿来炫耀的玩意.YII也是中国人写的.

TP能在中国流行,根本原因是TP公司的商业模式很成功,跟培训机构合作.第二,中文文档全,国内程序员英文能力都不怎么的(大部分是大专本科生).第三,营销模式很成功,社区拉拢新手,洗脑的好.

没实际使用过yaf PHALCON zf2 Laravel 等中的一个并深入理解的请别来跟帖.懒得跟你们争论.不是装B什么的.因为你压根不懂什么叫框架.

有个可以肯定的,当你深入理解 yaf PHALCON zf2 Laravel 中任何一个,基本其他都可快速上手.因为都是标准HMVC.

专门注册账号来回答这个问题。
首先声明:
自学PHP,没有专业的java或者Linux C/C++等语言的开发经验。最早接触的框架是ZF1,然后是ZF2,Symfony,Swoole,后来工作需要用TP,然后开始了蛋疼之旅。
TP最大的优点兼缺点,是灵活(多快好省?大跃进?率性而为?),怎么方便怎么来,力求快速上手,直奔小康,一夜建成社会主义。
1、凡是涉及到框架这种基础的应用程序的设计,应该准守软件工程的规范,该接口的接口,该抽象的抽象,该继承的继承,注意基本的设计模式。这样形成一种层次结构,便于理解和维护。TP3.2的核心包,完全就是类文件堆起来的,其组织形式恕我难以描述。
2、说到灵活,最让我头疼的是看别人用TP写的项目,特别是做二次开发。只配置文件就常常有三四处,定义的变量常量几百个,在其他非配置文件中自定义的变量常量更是不好数了,毫无条理可言。
3、TP的灵活是有原因的,因为PHP本身的灵活性(说白了就是不规范)。PHP框架的执行,其实就是PHP的文件不断的被Include来完成的。这样的话,只要你在需要使用某个函数或者常量之前定义好,那么就能使用。PHP曾经被定义为非计算机专业从业人员的编程语言,因为在写PHP代码的时候顾虑很少,以至于写出的代码很不规范。当其他框架发誓要让PHP程序规范起来的时候,TP把这种不规范发挥到了新的高度。风骚的C D F M I方法,让人心醉。
4、创作目的决定创作思维。当年ZF1出来的时候,正是PHP面向对象发力的时候,其目标就是为PHPer提供一个用面向对象方式做PHP开发的样板,之后的ZF2更加规范。而TP推出的目标大家应该很清楚了,为了让国内众多的草根PHPer(非计算机专业出身,甚至没高中毕业,刚刚经过3个月的培训)能够快速上手。如果回过头去翻TP前几个版本,那才叫烂呢。
5、TP的开发团队和核心用户的问题。今天中午和技术总监聊到了软件测试的问题,即国内很多公司的软件测试都很不专业。为什么呢,因为整个大的环境让软件测试很鸡肋。大家都想用上专业的测试,但是这无疑会加大开发的工作量,特别是大家都很不专业的时候。好了,点到为止。软件开发也一样,国内很多从业人员(科教人员)并没有专业的功底。别的不吐槽,谭浩强的绿皮书大家都读过吧,书里竟然教别人直接include一个C文件。国内的情况就是,专业的调试工具不用,没有测试用例,甚至没有软件测试的环节,为了赶时间甚至完全忽略安全问题和性能问题。就是这样一群开发人员和用户,你指望开发一个优雅的框架出来,从需求上就不可能。
6、当有些中国人不断重复德意志的严谨和倭国的细致的神话的时候。却对于自己的要求不断刷低。当国内所有PHPer都严谨到固执的时候,你认为还会有TP这种情况出现吗:很多人都说出他的缺点,但另一群人却奉若皇帝的最美的华裳,如信奉灾难也是神明的恩赐,不容置疑。

++++++++++++++++++++以下补充++++++++++++++++++++++++++++++
TP框架好不好咱们先不说了,你把TP框架放在ZendStudio和PHPStorm的项目中看看满屏的警告报错,然后再把其他框架放在项目中看看几乎没有警告,明白了吧。

事分两面看,TP其实也有优点,比如文档方面的确好,培训做得好,这个不得不承认。

虽然都说烂,但是的确解决了很多人的问题,其实有很多人只需要能够帮助他完成任务就可以了,没更多要求。

我鄙视这个框架完全是纯技术层面的鄙视,因为多年前读过TP的代码,有些实现上完全是概念性的错误。

比如ORM,按道理来说最后应该返回一个实例化对象,且开发者可以给这个对象添加自己的逻辑。

当时TP怎么做的呢?

return new StdClass(array(...));

我就问你们一句,服不服?

TP的代码就是给我这样的感觉,好像达到目的了,但其实方法没对,到处都别扭。

说TP垃圾的,是因为TP跟其他框架比,差太多了,一直在抄其他框架的思想,却抄了四不像。

说TP不垃圾的,还好用的,大抵是没用过更好的框架。

好比,一直看国产剧,觉得国产剧拍的如何如何好看,如何如何感觉……等你看了美剧,英剧后,你就不会说国产剧好看了。

就这么回事。

因为他是国产

我就是那种不喜欢THINKPHP框架的人,但是还谈不上讨厌其框架甚至鄙视用这个框架的人。
TP的那些个DMCUF等方法也是醉了!
另外TP不严谨(相对于其他一线框架)。。。
总的来说估计还是逼格问题
===============以下内容是追加的=======================
THINKPHP误导了很多新人,我遇到一个都工作几年的phper,但是一直用的THINKPHP,在他眼中,类必须是以.class.php结尾才对!控制器一定要叫XXXaction.class.php(貌似3.2改成controller了)~

我现在用TP3.2.x 做了很多个平台了(有游戏平台,有CMS)。觉得容易上手,但是总体还是不是满意的。
很多功能考虑得还不太成熟。


之所以大部分国人不喜欢ThinkPHP,我来说

1.因为他是国产的。不要不以为然,国人都是媚外的。
2.因为太太容易就上手。越是容易得到的反而越是不珍惜!
3.因为他U C A I F D M 这样的函数命名。鄙视他以显示自己的高端

2015-8-19
ThinkPHP 有缺点也有优点,不过总体来说毕竟国人的第一语言不是英语,而且大家开源精神不是很高,thinkphp的开发力度也没有国外那么高,肯定跟外国的MVC框架还是有一定的差距。

就一点:文件目录大小写混用。

我从来不争辩哪个php框架好,或者哪种语言好。大把的时间浪费在这上面,还不如赶紧敲几行代码、刨几口饭来得实在。

首先,不得不说:鄙视链是真是存在。

去年8月份开始学习php,整个8月份都在学习OpenCart并写了一个外贸商城。OpenCart本身没有用任何框架,模板都是嵌入大量的<?php ?>,每一条数据库查询插入都是纯sql语句我会说?

于是我也蛋疼啊,真想找个框架来解脱一下双手。于是一查,各种外国吊炸天的框架,可是作为web新手的我感觉难以着手,看着他们的文档,难以下手(写点小应用还可以,大了起来暂时hold不住)。

后来有个同学,他说他用tp,感觉蛮爽的。于是我就学习了TP3.2.x(3.2前的版本感觉不爽。。)。

真的比较容易上手,ThinkPHP框架是我唯一看着文档就掌握,所以新手纠结啥?直接来学了,学习到TP,并不是说TP有多屌,最起码让你真实感受啥叫MVC;提交个表单啊,为了要过滤一下;把php+html混合写是不是很蛋疼啊,来个模板标签让前端兄弟好着手啊。。。。

好了,当我懂了这些,再学其他框架我就大概知道框架会提供给啥的了。TP给我感觉就是,我看着中文文档就能解决我遇到的问题,看文档我就会用TP,其他框架呢? 这种带来的成就感真是激励着初学者学习,要是一入门就来个Laravel,我擦!window下装个composer失败,严重打击学习激情。

额,貌似扯远,爱鄙视就鄙视,因为我自己本身也鄙视php,也鄙视国产的东西,可是没办法,老板要你用你就得用,你团队都在用,你就得用!

额,php本身特性决定了他本来就很多框架,你要是喜欢自己弄个简单的,实在简单了(我自己也搞过一个玩玩)

因为它四不像...

应该是一个现象吧,大家对made in china 的东西都有一种偏见

自认为有点崇洋媚外的感觉啊

这就好像 你去C语言群里 说一句 PHP是世界上最好的语言 他们能把你喷死一样...

从来都有一种工具鄙视链叫做国外的好。

搞嵌入式的都知道Keil,但没几个会认识周立功的TKStudio。
写前端的都知道DW和Sublime,但没几个会知道HBuilder。
用苹果手机的人,也同样是鄙视所有的国产手机。
同样是PHP框架,国外框架一大堆,但却没有几个会认同国内的Thinkphp。

要我说国产的最大优点是什么?我为什么选择国产?
答案就是:顺手!

我写了3年的C51,用了2年的Keil为什么后来去用了TKStudio(现在这个软件已经不维护更新了,但可以接入Keil内核)?
用了1年多的DW、PHPStorm和Notepad++,为什么现在改成只用HBuilder一个?
学了3年的C语言为什么后来选择了PHP(PHP有中国人鸟哥在核心团队)?
手机从黑白机到功能机,到WM系统,到MIUI,一路没有什么使用障碍。我的手机我要什么功能可以快速找到(除了单手操作有些不是很好以外),IOS找了半天也不知道XXX功能在哪里设置!
看了一大堆MVC框架的视频为什么是选择了Thinkphp作为第一个使用的PHP框架?

我相信很多人既对国内缺少创新力感到失望,同时却又诟病国人的一些新创规则,
比如整个锤子手机;
比如Thinkphp中的单字母方法;
老工程师们都有一种思维惯性,有new才是新建一个对象,没错new一个对象是所有可以面向对象的语言的共同规范。但是,这些常用方法有必要把PHP写得像JAVA一样长到吐血吗?如果是这样,你当初为什么选择学PHP则没学JAVA(JAVA和php做同样的事情,却有更高的工资)。

最后补充
Thinkphp 未公知BUG及缺陷修补 >>请直戳我的这篇博文

ThinkPHP是入门级框架,学习简单,这个是它的优点!无论别人怎么鄙视,也不可否认它是一款优秀的PHP框架。

按照知乎的风格,赌五毛有人说:先问是不是,再问为什么。

说一下自己的意思,没有鄙视的成分,我既用ThinkPHP做东西,也用Yii2做东西,但各自做的东西不太一样。
功能不需要太多扩展或插件的,我一般会用Thinkphp,因为这个入门简单,文档丰富,看看就能写程序,D,M什么的我倒觉得,习惯了一样,我现在用的不方便的一点,就是插件或扩展少,有的第三方必须要修改才能使用。
功能可能用到的插件比较多,我会用yii2,毕竟github上yii2的插件或扩展会比较多,composer支持的也不错。

新手上路,请多包涵

一个现象的存在必然有它的合理性,tp能被这么多人喷,证明它确实很火(我姑且认为喷它的都是用过的,没用过就喷就忽略了吧)。一个事物的价值我认为体现在它创造的价值上,tp支撑了相当数量的中小网站,更重要的是让很多phper更加轻松的入门,我觉得有后一点就够了。一个框架能让初学者快速的学习,快速的写出能用的东西,即便不够好用(你不能指望刚学就写出好用的东西吧),那也是有其存在价值的。

能用就行,没觉得咋样,用的人多了去了,任何一款产品都有不一样的声音.希望越做越好.做自己才是最重要的.

用ThinkPHP开发了几个项目,目前来说感觉还是很不错的。
唯一的不足就是他对ORACLE的支持不是很好,好多功能都要自己扩展。

有这事?
个人目前在学习当中,平时也没觉得有哪个鄙视不鄙视的吧?
不喜欢的肯定有,鄙视的,我想应该也有,但这也不是单方面的。
就像使用TP的,应该也有鄙视使用CI的吧。

楼主大惊小怪了,TP在国内很多中小企业应该算是主流吧。
之前,我去面试时,好几个公司都是使用这货来做开发的。

任何一个框架都有优点与缺点。说thinkphp不好就说出那里不好,thinkphp也不是一无是处,感觉还是不错吧。简单易用,小中性项目完全可以胜任,开发起来还是很舒服的,扩展支持的也比较好。个人第一个php框架就是thinkphp,用者还是不错的。有人还写了thinkjs,就是仿照thinkphp的模式,也很不错哦。
至于好不好,要放在具体的环境中来评价而。

php已经不用了 除了要维护symfony2的项目写一点

已经入了rails4 感觉ruby两行代码的东西 进了php要写5-20行

这种感觉 自己体会

写了大概十几个项目了 php有太多可以省略掉的语法

一个好的工具/框架 应该:

编码规范性 
代码可读性高(不是你读 是任何一个程序员都能读懂个大概)
社区活跃
支持的库要足够全够强健 
能帮助你事倍功半

这样写出来的工具 也足够可以维护

任何工具对比一下这几点就知道了

尝试写过thinkphp,感觉一般,规范比较多,还不如自己写原生的PHP。

就像前端鄙视jQuery一样

THINKPHP 用2,3年了。不错。。赞一个

一句话,这货没有单元测试

因为太简单了,学习几天就能写出 他们工作好多年才能写出的项目。 导致的心里不平衡。 被鄙视也在所难免。
就和 民谣 摇滚 小清新 鄙视凤凰传奇一样。
但是鄙视有什么用? 鄙视也改变不了凤凰传奇在乐坛的地位,鄙视也改变不了tp在国内网站的占有量。

首先关于return的问题:yii里面也不要求一定return视图,yii的控制器也内置了可以直接输出视图内容的方法,但是我看就没人会因为这一点喷yii,说白了,这里面有部分人是为喷而喷。

然后来说说一个好的框架定义是什么?

设计模式好?
代码规范?
文档详细?
注释明了?
还是用的人多?

我觉得thinkphp和其他框架的比较,就像贴吧里面dota和lol英雄联盟的互喷一样,一个说我玩的人多我最优秀,一个说我可玩性高我最优秀,这个谁说的清呢?

不知什么时候起,互联网上好像有一股黑thinkphp风气,就像java程序员鄙视php程序员,php程序员鄙视asp程序员,asp程序员鄙视易语言程序员,易语言程序员鄙视authorwave一样。

不说thinkphp其他方面怎么样,thinkphp的的确确是一个沉淀了八年的作品,从头到尾没有收过一分钱,完善的开发文档,本土化做的很不错。(这算黑点吗?)社区运营确实存在问题(广告,hr泛滥,提个问题没人解答),但是他的确是一个让广达中国php程序员能过快速认识mvc,框架,CBD(thinkphp3.2之后的确做到了cbd,完全可以对框架底层定制化开发,有点类似于laraval里面的中间件和java里面的拦截器),包括orm等等,虽然他在某些方面的确算不上一个顶尖优秀的框架,但是从学习入门型框架的角度来看,他的确可以算得上是一个简单,轻量,适合一个完全没有接触过mvc框架的小白门用来入门和学习的框架了。

可以说,thinkphp的中文文档丰富,社区友好,上手简单,带领很多像我一样的小白步入了PHP框架开发时代,这就是他最大的功劳。

况且像腾讯右侧栏里面大多数推广网站,极客学院的后台以及很多中小型创业公司都在用他。包括国内最广的weiphp框架也是基于tp3.2开发的,稳定性和广泛性可见一斑。

最后说一点,整个IT行业现在都很急功近利,追求的是敏捷开发,短期效益,市场需求也是廉价劳动力,thinkphp简单易学导致招人非常方便廉价,这只不过恰好迎合了这种形式。

1 篇内容引用
宣传栏