Yii 后起之秀:很优秀

 

爱老虎油: 这个我有发言权,我以前用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比较突出的优点是:程序员

  1. 性能
    Yii可能市场上主流PHP框架里面相对性能最好的一个,Yii对于类装载的机制充分利用了PHP5.3的优点,每个类只有当第一次被用到才被载入,并非全部框架都“按需载入”从而得到性能上的优点;
     
  2. widget
    widget机制为开发提供了天然灵活的代码封装和重用,好比网站有一个Top10列表是一个单独的内容单元,须要在不一样的页面区域显示这个列表,在Yii里面的实现很天然清晰:

    In Top10Widget.php (Controller)

    Class Top10Widget extends CWidget {
        public $list = array();
        public function init() { // populate $this- > list }
        public function run() { $this- > render('top10'); }
    }

    In top10.php (View)
    < ?php foreach($this- > list as $item): ? > 
    ....... // outputs html markup
    < ?php endforeach;? > 

    在须要的地方调用这个Widget
    ...
    < ?php $this- > widget('Top10Widget'); ? > 
    ...

    其余的框架也有相似的机制,但概念上没有这么天然
     
  3. 恰到好处的Model层设计
    Yii的Model相对Symfony这样的框架来讲被设计得比较薄,没有使用ORM,保证了框架总体的小巧,model层调用产生的overhead好比Symfony这样的框架要小,Yii使用直接的DAO和Active Record来和数据层交互,感受更加实用,没有特别的学习曲线,重量级的ORM好比在Qcodo和Symfony框架里,有比较陡的学习曲线
     
  4. 平滑扩展
    要扩展Yii或者引入第三方库比较容易,YII里的扩展没有给开发人员预设不少约定,有一些框架若需扩展就须要遵照“框架”自己的一些个约定,而YII的扩展基本就是纯php的扩展方式,本质上就是include一下,无需太多配置,组建(component)机制为扩展提供了很好的全局支持,一个扩展能够做为一个组建被引入到须要的地方,固然这不是惟一的方式
     
  5. 功能设计
    相对更加轻量的php框架如CodeIgniter,Yii所提供的通常×××的设计水准比较高,考虑比较全面,工做在CodeIgniter上,在某些状况下你可能碰到框架过于简单,对部分功能缺乏深刻设计,Yii在这些功能的设计上都有值得借鉴的地方:
    • Url Dispatcher
    • I18N
    • Caching
    • Filtering
       
  6. 有中文支持
    不全面,但也算一个优势。

 

 

 

国外的评级和热门排名, 仅供参考sql

 

 

Yii和ThinkPHP对比杂谈thinkphp

 

不是一篇评测文章。只是个人喃喃碎语,不计较真。并且,下面的内容真的会很杂,不全面,并且你不可能有和我同样的开发经历。因此对于某些我醉心的特性,你可能不会理解。一样的,我也不可能所有理解你为什么对某一项特性十分喜欢。api

关于ThinkPHP(如下简称TP)和Yii Framework(如下简称Yii)的背景、做者和速度方面就不涉及了。由于速度是一个很复杂的问题,牵扯的因素不少。我不得不认可ThinkPHP是 一个是国内框架运营方面的榜样(当FleaPHP/QeePHP最火的那阵,我说过FleaPHP/QeePHP会倒的)。php框架

运行环境:session

  • Windows NT ACER 5.1 build 2600 (Windows XP Professional Service Pack 3) i586
  • Apache/2.2.14 (Win32) DAV/2 mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
  • Mysql 5.1.4

下载的代码:app

  • ThinkPHP 2.1,带扩展、示例和文档完整包,发布于2011年5月1日,下载地址是 http://thinkphp.cn/Down/download/178
  • Yii 1.1.7,内含框架、实例和环境检测,下载地址 http://yii.googlecode.com/files/yii-1.1.7.r3135.tar.gz 文档须要另外下载

中文化方面,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-

相关文章
相关标签/搜索