你为什么/因为哪些方面不喜欢 ThinkPHP 框架?

2016-11-25 11:00:37 +08:00
 JohnH
14447 次点击
所在节点    PHP
82 条回复
holyghost
2016-11-25 11:02:23 +08:00
因为培训班都在教,恨屋及乌。
Light3
2016-11-25 11:05:22 +08:00
@holyghost 你 out 了 据传培训班 现在教 laravel.
murmur
2016-11-25 11:10:45 +08:00
ThinkPHP 小型应用开发首选
php 不流行自己写框架么
mcfog
2016-11-25 11:14:40 +08:00
因为面试那些简历上出现 TP 的人,还有框架只写 TP 一种的人实在浪费太多时间,每次都抱着“不能对 TP 有偏见,还是面一下试试吧”的心态然后每次都后悔得不行
iRiven
2016-11-25 11:41:32 +08:00
😂表示不懂
sobigfish
2016-11-25 12:07:55 +08:00
> @Light3 "据传培训班 现在教 Laravel."
想看看他们坑不坑(网上只搜到个 5 天的 应该只是讲基础—— google 的, baidu 上可能坑学校多,但我直接当无视了)
keikeizhang
2016-11-25 12:31:30 +08:00
没有喜欢不喜欢,只有适合不适合!
anubiskong
2016-11-25 12:32:29 +08:00
不是因为 thinkphp, 而是因为 php
kiwi95
2016-11-25 12:35:17 +08:00
用过 3.X 的 thinkphp ,各种命名奇怪的全局函数, U 函数, i 函数之类的,命名空间混乱, MVC 划分不清晰,模块化也不好,其他的不太记得了

反正印象很不好,被人要求用的
mdzz
2016-11-25 12:46:56 +08:00
先问是不是,再问为什么。(
realpg
2016-11-25 13:07:57 +08:00
thinkphp 坑挺多,但是不至于因为这点东西而极端的不喜欢 thinkphp
重点是用 thinkphp 的人里面渣太多
m939594960
2016-11-25 13:47:02 +08:00
我用过很长时间的 TP
有很多个坑
1.U 方法生成不按路由
2.关联模型 create 自动验证不生效
3.自动验证有很多莫名其妙的坑(明明是对的但是不好用)
4.where 如果用字符串不用数组去写 会有注入(手册上没有任何说明,只是推荐使用数组形式 很多人都用字符串)
5.where 或者 order 等 orm 链式操作 有一定几率 出现问题 用数组功能失效 必须用字符串
6.模板引擎太丑,还得记模板引擎的语法,逻辑判断比较多的情况下特别乱,分不清 html 和模板引擎
7.模板引擎解析总是出问题,特别是 js 写到页面上的时候
8.如过不改目录结构 日志会暴露
9.命名空间混乱(感觉 TP 的命名空间毫无意义,特性完全没用到),会有两个同名文件用同样的命名空间,导致各种 ide 的代码提示功能失效
10.按照官方的说明,添加第三方扩展的时候要放到 TP 框架的文件夹,以后升级什么的比较麻烦(基本也不要指望 TP 更新了)
11.框架不自带 .gitignore 每次提交 git 的时候 都得自己写这些忽略文件 十分麻烦
12.官方并不经常更新,一些 BUG 也得不到及时修复
13.框架不带用 redis 存放 session 的功能,如果自己网上找办法还得再 TP 框架的文件夹中添加文件
14.Model 的关联模型什么的基本是个残废,手册看不懂,只能用 join 等着被注入
15.。。。。。。。。。。。。。。。。。。。。。
不说了 还有很多 一时想不起来了,这是刚才能想起来的这些


我很喜欢 laravel
主要原因(跟 TP 比 除了臃肿一些,我基本没找到任何缺点)
1.有 composer ,第三方 vendor 非常全并且好用
2.更新非常快 基本紧跟 PHP 版本更新 ,能让你了解并且使用更新,更优秀的 PHP ,写出更优秀的代码。
3.语法写起来非常舒服
4.简单的联表特别方便,查出来的值不会像 join 一样 混在一起。
5.多看 laravel 的代码 写法,会让你的代码写得越来越漂亮
6.。。。。。。
ooh
2016-11-25 15:43:02 +08:00
没有不喜欢,只是有更多的选择,为什么要不喜欢 ThinkPHP ,都是为开源世界做贡献,难道开源界也有二等公民的说法???
yoke123
2016-11-25 15:51:56 +08:00
别说了 现在培训机构都教 Yii2 Laravel 这些流行框架了
TP 只是基础过一遍的
多用用其他框架就是知道 TP 好不好了
silenceeeee
2016-11-25 17:38:27 +08:00
@m939594960 我想问个问题 大家项目代码中还会允许使用 JOIN 查询?
m939594960
2016-11-25 17:49:29 +08:00
@silenceeeee 为啥不允许 join
zhpech
2016-11-25 17:53:02 +08:00
文档?

我也喜欢 Laravel ,过去用 CI 也觉得很棒。
kancloud
2016-11-25 18:17:27 +08:00
不喜欢 TP 的是因为他们还不知道 TP5 ^_^ 喜欢 TP 的用户是一直在享受 TP 带来的好处 和 见证 TP 的成长
shijingshijing
2016-11-25 18:32:14 +08:00
@Light3 现在的培训班都这么屌了啊………………
changwei
2016-11-25 18:32:46 +08:00
我之前也很喜欢 Thinkphp ,尤其是出了 5.0 之后觉得会有很大起色,但是看了一些人写的代码,后来我想错了。

Thinkphp3.2 已经有 @m939594960 吐槽过了,我就谈谈其他的吧。

首先 Thinkphp5.0 号称模型层有巨大改进,然而我发现连用 model 工厂函数生成 common 公共模型都是错的。我去提 issus 被其他用户告知要手动按命名空间生成。

其次这个模型层的官方文档非常简单,很多用法连例子都没有,如果不用 ide 的话都不知道某些方法的参数是什么。总之用 Thinkphp 的话不是很熟练的情况下不能用编辑器,否则等着踩坑吧。不仅仅是模型层,其他文档也一样,文档还是太简单了,可能是刚发布不久还在修订中。

接着就是缓存了, Laravel 中缓存有个 remember ,可以以很优雅的方式写缓存的存储+获取,而 Thinkphp 中我得先判断缓存是否有,有的话直接 get ,没有的话得先 set 然后输出,写法非常不优雅。不仅仅是缓存,其他相关的服务也一样不优雅。

然后还有他的源码,看 5.0 的源码看到第一个加载的核心类 Loader.php 我就看不下去了,整个类文件里面所有的方法连 docblock 注释都是有的有有的没有, private 方法和 public 方法混合摆放,让我们阅读代码的时候无法以一种自顶向下的方式轻松的阅读,给人的感觉就像是这个代码是由几十个人没有用版本控制系统写出来一样。私有成员也没有用_下划线标明,代码毫无规范性。某些类库头部连作者,包名,修改时间都没有(难道开源项目就没有责任到人的说法嘛?)。可能我说的现象现在有些代码改了,但是确实是有这种情况的。

最后也是我最想表达的一点: Thinkphp 框架即使本身已经很优秀了,但是由于它简单上手,导致使用它的人群平均水平比较低,写出来的代码质量非常差,体现到实际项目中很多人就认为这是框架的锅。相反用 Laravel 的人由于本身更具有好学,主动进取,对英文掌握良好(这点非常重要,英文好的人,他们变量名,标识符都写的非常规范),所以导致我们看起来 Laravel 写的项目整体都非常漂亮优雅。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/323181

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX