爱老虎油: 这个我有发言权,我以前用ci开发过一个商城、一个cms;最近又学yii开发一个cms。个人感想:ci的结构适合oo经验不丰富的开发者,结构和手册简明易懂,我刚开始就是边看手册边开发商城;yii就是学习曲线陡点,手册要看两边,而后demo blog再看两边,而后边看api边开发,中间会出现屡次卡壳要上论坛求助,可是真正掌握后开发效率会高于ci的,就那个Crud不是ci能比的。 php
liang: 我对两个框架都有实际项目经验。以前一直用CI,后来去一家美国公司工做,他们用的是Yii
CI跟Yii根本不是一个档次的,CI只适合作些小玩意,要认真作开发仍是Yii更合适
Yii的主要问题是用的人太少,所以网上能找到的资料很少
不过即便常常卡壳,开发效率也比CI要高很多 html
flamingtop: 团队使用Yii8个月,我的以前使用过CodeIgniter, Kahana, QCodo, Symfony,Yii比较突出的优点是:程序员
国外的评级和热门排名, 仅供参考sql
Yii和ThinkPHP对比杂谈thinkphp
这不是一篇评测文章。只是个人喃喃碎语,不计较真。并且,下面的内容真的会很杂,不全面,并且你不可能有和我同样的开发经历。因此对于某些我醉心的特性,你可能不会理解。一样的,我也不可能所有理解你为什么对某一项特性十分喜欢。api
关于ThinkPHP(如下简称TP)和Yii Framework(如下简称Yii)的背景、做者和速度方面就不涉及了。由于速度是一个很复杂的问题,牵扯的因素不少。我不得不认可ThinkPHP是 一个是国内框架运营方面的榜样(当FleaPHP/QeePHP最火的那阵,我说过FleaPHP/QeePHP会倒的)。php框架
运行环境:session
下载的代码:app
中文化方面,TP和Yii均可以知足中文用户的需求。可是因为Yii是国际化的项目,因此代码的注释仍旧是英文。不过两个框架的做者都是国人(没错,Yii做者的国籍仍旧是中国),因此交流起来仍是很方便的。框架
是Yii自带了一个环境检测脚本,能够告诉你当前的主机环境是否知足Yii的需求。检测的内容也比较详细。我以为这点比较方便。TP最低须要PHP5.0支持,而Yii最低须要PHP 5.1.0支持。因为我使用PHP 5.3,因此对我来讲没有什么区别。
Yii是纯面向对象的的框架,而TP提供了一系列单字母函数。相比之下我更喜欢Yii的方式,由于能够避免项目之间的冲突。
TP在之前的版本的基类Base类,当时就和一个整合Ucenter时的类冲突了,一度很苦恼。如今TP的各类基类仍旧是直接命名,如Think 类。在项目开发过程当中就会体会命名冲突的痛苦之处。Yii则在框架的类都加上了C前缀(接口是I前缀),有效地避免了这个问题。Yii中的 CComponent是全部类的基类,能够看看CComponent的代码,颇有用。
说到命名问题了,就不得不说自动导入的问题。TP的类导入和Yii的代码风格差很少。可是Yii还支持PHP的命名空间和自定义autoload方法。
TP有个特点叫项目编译。我以为与其使用项目编译,还不如使用APC。在Yii中也有个yiilite.php文件,里面就包含了Yii的全部核心类。Yii做者表示在没有APC的状况下,仍是不要使用这个“编译”好的文件,由于反而会增长系统开销。
TP中还在第一次访问的时候自动生成项目,我以为这一点和自动编译同样,都是我不喜欢的。我对每添加一个if都很敏感,这种判断让我很纠结。好比说 TP在每次运行的时候都要检测PHP版本,而Yii则单独作了一个内容更详细的环境监测脚本。我既然要用这个框架,我在第一次使用的时候,确定就知道能不 能在当前环境上使用了,为何要每次都要检测呢。当时我就说过,TP为用户作了太多事情。好比旧版本中的TopN函数。
Yii的组件思路是很是不错的,用起来十分地舒服。从session到cache,你能够无缝地更换全部的组件而无需重构项目。并且Yii的延迟加 载也作得比较完全,每一个组件都是用到的时候才加载。好比,TP中,若是配置了session自动打开,则TP在应用初始化的时候执行 session_start()。而Yii则是你用到session的时候才打开session。
说到项目的配置文件,TP要求是config.php,而Yii则比较灵活,支持多配置文件。
当初TP很推崇本身的ThinkAjax,如今也改用JQuery。这一点是进步。
TP作了不少小实例,这一点值得Yii学习。Yii在这一方面正在有一个叫yii playground的实例网站在开发中(http://code.google.com/p/yiiplayground/)。
TP的动态模型能够实现不须要定义Model。可是在实际的项目中,我更倾向于使用Yii的方式。顺便说一句,将label定义在model中,为个人平常开发带来了许多方便之处。
刚才提到TP的项目自动生成,Yii中也有这种工具。并且比起TP,Yii的工具更增强大并且可扩展。
从TP的代码中,有人能够看出其做者熟悉JAVA。而从Yii的代码中,有人会发现其做者熟悉.Net。这经常是我身边人看到代码的时候发生的小插曲。
Yii封装了大量的页面控件和类库,也是Yii如此吸引个人一点。这是TP短时间没法比拟的,在TP的使用过程当中总遇到这样那样的问题,让我感受TP对我反而是阻碍。而Yii真的是,舒服,实在是太好用了!
不管从代码规范、设计思路、类库丰富程度上来讲,TP都远远不及Yii。有人说你看TP多简洁,Yii太臃肿了。错了!简单和简洁不是一回事。TP 那叫简单,你读读Yii的代码吧,那才叫简洁。至于臃肿,去看看Zend Framework就知道了。(顺便说一句,我很喜欢Zend Framework,它是学习设计的典范)
说到读代码。对于程序员真的很难吗?读写得好的代码应该是一种享受才对。Yii的学习曲线是比TP高那么一点点,可是对比Yii的巨大优点而言不算什么了。并且,我认为在遇到学习困难就退缩或者认为Yii就像天书同样的人,仍是转行吧。
以上是应一篇评论所写的。对比TP1,如今的TP2的确有了不少进步,可是仍是存在一些问题。对比Yii……,TP真的没有可比的能力。抱歉让TP的fans失望了。
那就下定论了吗?不,不是的。从类库到框架,再到解决方案。什么是最好的?每个人都有不一样发说法,这是由于每个人的思惟习惯不一样,遇到的问题不一样,问题所在的环境也不一样。怎么能奢求全部人都有同一个选择呢?
仍是那句,适合,就是最好的。对我来讲,Yii是最好的。
-EOF-