吐槽下 php 几个框架,都是实际项目中用过的,欢迎有使用经验人的喷

2014-08-20 18:07:25 +08:00
 sheldondai
首先说下轻量经的框架
thinkphp和ci是我使用的过的两个轻量级框架,但这两个框架缺点都很明显,就是简陋,
这两个框架的bug都很多,我自己都碰到不少。tp是我刚毕业时用的,用了两年,也和tp的作者一起工作过,算是深度用户了。
1.tp和ci的开发和测试估计都没有在nginx下测试过,我在nginx跑,ci的路由有bug。
2.ci还有个明显的设计问题,而且竟然存在了很久,那就是在 index.php里面,当是production环境就
会关闭错误信息error_reporting(-1);这个错误一直存在了很久,最近才被fixed,真是奇怪这么显明的问题,竟然存在这么久。
3.tp和ci都只能做小项目,对多人合作方面,测试方面都考虑的很少。
4.开发过还遇到过若干小bug,这里就列举了,有些问题记不太清了。
5.这两个框架的中文文档都做的是一级棒。

再说说yii框架吧,yii框架最让我叫觉的我就想就是它的gii吧,分分钟做出个简单的后面管理demo,
不过我吐槽的就是这个,gii生成的代码使用的是widget,这个widget把view层和数据层紧紧的包裹在一起,不只是前端开发人员修改困难,就是后端开发也要查半天文档了才能修改。
当时发现好不容易修改好一个,下一个看似简单的需求,又得查半天文档才能修改好。

举个例子。列表页面一般都是zii.widgets.grid.CGridView这个widget,当你对生成的代码暗自高兴的时间,一个需求来了,列表中的某一列的label需要动态显示。但是你看代码,zii的label是死的,不能写php代码,为了这个需要我只能改了框架里的CGridView,yii里面的代码大量使用了eval,所以在view层写代码会很难维护。类似这种
'url' => 'Yii::app()->createUrl("topic/create", array("id"=>$data->id,"type"=>1, "rtype"=>0))',代码会大量充斥在view层。当在大量细小的需要过来时,我现在当初使用gii省下的时间都被gii收回去了,
最后只能回归传统的foreach 出列表页。
yii还有问题就是代码风格混乱,有的地方缩进8个字符,有的4个, yii2在这方面已经改正了。


我心中的理想的开发大中型项目的框架是这样的
1. 代码风格在PSR-2以上。
2. 框架本身是低耦合的,并且用框架写的业务代码也是代耦合的。
3. 在console下也正常运行。
4. 友好的支持php_unit,要友好的支持php_unit,上面的2,3是必须的,框架本身也有做单元测试。
5. 一些基本的功能模块以bundle或module的形式提供。
12667 次点击
所在节点    PHP
47 条回复
trimleo
2014-08-20 18:11:57 +08:00
一大波laravel粉丝即将赶来。。
欢迎关注phphub.org~ 立志于打造积极向上的 PHP & Laravel 开发者社区.
atan
2014-08-20 18:12:09 +08:00
试试laravel吧,上手后还是很爽的
sheldondai
2014-08-20 18:16:18 +08:00
laravel粉这多,由于公司原因,一直没用过,不过看到larave用了很多sf2的组件,laravel应该是在sf2做的减法 吧
regmach
2014-08-20 18:25:22 +08:00
ci上手太快,没了
yii的前端控制和lz所说差不多,crud还是难维护,relations在简单sql语句下很快,复杂sql语句下很多人对于还是准手写
lijinma
2014-08-20 18:27:16 +08:00
laravel 可以试试,

其实只要是用 Composer 来管理的框架,整体来说都还是比较低耦合,而且有 phpunit test。

推荐你尝试下:

Slim Micro Framework,这种简单的框架你可以看看噢。

全部都是用 composer 来搭建,私有的使用包使用 Composer satis
sheldondai
2014-08-20 18:32:24 +08:00
@lijinma sy2有用过没,看了下,它的第三方bundle很多,可以下很多工作量。
sheldondai
2014-08-20 18:36:28 +08:00
@regmach 国内用yii的真多,我是真没体会到yiii的真谛
wangdaimishu
2014-08-20 18:46:27 +08:00
Yii 的 GridView 有其两面性吧,缺点就像你说的,跟前端配合的时候不方便,虽然这个组件的可定制性超强,不过始终不如传统那种在里面一点一点混写 html + php 来的直观。

但是真正用熟以后你就会发现这货好强,个人感觉是 Yii 的杀手锏组件之一,以至于用习惯了的某一天发现自己不会处理排序了(跟他搭配用的 Sort 组件专门干这事)。

我现在看框架都会先看看提不提供类似的组件,不提供的一般都不用,没有类似的组件开发后台功能真心没效率。
wangdaimishu
2014-08-20 18:48:46 +08:00
@sheldondai 必须推荐 Yii2啊,Yii2的 GridView 组件更强了(主要得益于 php5.4以后的匿名函数功能)
denghongcai
2014-08-20 19:14:18 +08:00
CI的路由有BUG这就黑的太奇怪了吧,明明是你NGINX的Rewrite没配好
whuhacker
2014-08-20 19:53:14 +08:00
Yii 的代码缩进啥时候有 4 字符 8 字符的问题?不一直都是用 tab 的么。。
我觉得 Yii 的好处在于灵活,简单的小项目用 Gridview 等组件分分钟搞定,复杂的也可以自己做定制。

Yii2 就更好了,project template 都分 Basic 和 Advanced
master
2014-08-20 19:57:32 +08:00
怎么没人提Yaf
wangdaimishu
2014-08-20 20:01:07 +08:00
@master Yaf 这种就不要拿出来说了,这货就是个用 C 写的 VC 调度器。
拼性能,phalcon不比他差,但是人家功能甩他好几条街。
kfll
2014-08-20 20:05:21 +08:00
又看到说自己用 nginx 跑 php 的了
barbery
2014-08-20 20:07:00 +08:00
phalcon啊,亲。。。phpunit跑测试完全木压力,命令行下跑也是杠杠滴
lazyphp
2014-08-20 20:27:40 +08:00
楼主吐槽这么多,为什么不自己写一个呢?
angeloce
2014-08-20 20:39:26 +08:00
没人说说thinkphp呢, 国产里确实不错的框架, 但是缺点也确实多了点, 风格不统一的配置, 孱弱的中间件和模版.....
aWangami
2014-08-20 20:46:37 +08:00
新人搭个话~
目前才入手TP不久,发现这货会屏蔽掉php的原始错误信息,还有有时候一层一层的库内调用堆栈其实对调试帮助不太(个人觉得噢),不知道是不是我调试模式没有配置好..发现如果对它不是太了解的话,类似C语言少了分号却报一些比较莫名的错误,摸不到头脑。其实调试模式可以做得更好..
其他方面的话,目前还在探索中
regmach
2014-08-20 20:51:46 +08:00
@sheldondai Yii好上手啊,思路清晰也基本够用
@wangdaimishu Yii的后端定制能力很不错(废话,原本就是PHP框架啊).widget的前端定制还是感觉有点麻烦---个人之见,其他的也基本没用过---逻辑复杂是还是要手写好多的
aWangami
2014-08-20 20:55:10 +08:00
对了,还吐槽一句,TP是不是不支持mysql的datetime和timestamp,我看OneThink都是用int字段类型来表示的..

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

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

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

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

© 2021 V2EX