我之前也很喜欢 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 写的项目整体都非常漂亮优雅。