laravel和thinphp和yii有什么不同和优缺点啊 - 爱问答

(爱问答)

laravel和thinphp和yii有什么不同和优缺点啊

关于Thinkphp(以下简称TP)和Yii Framework(以下简称Yii)的背景、作者和速度方面就不涉及了。因为速度是一个很复杂的问题,牵扯的因素很多。我不得不承认Thinkphp是 一个是国内框架运营方面的榜样(当Fleaphp/Qeephp最火的那阵,我说过Fleaphp/Qeephp会倒的)。

运行环境

  • 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

下载的代码:

  • 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。这一点是进步。


我有一个用户表,关联用户信息表,然后还有个文章表,文章表关联用户表。然后你要从文章表用户ID查用户表再取用户信息,tp怎么干....直接上sql语句。他的关联模型太呆板了。在laravel中直接在模型中建立映射然后doc::find(1)->user->userinfo就把用户信息取出来了。这只是一个很细节的问题,放大来说就是laravel写起来真心舒服...而且你把tp这样的轻量级框架和laravel比也是不合适的,laravel自带了数据库管理migration、爆好用的artisan,tinker命令行,模型工厂等一堆周边工具。tp的对手应该是CI。侧重点只是Mvc分层而已。上手快。开发小东西也够用。不过tp的安全性不知道怎么样,似乎在信息加密方面不如别的框架重视。

相关标签:php

下一篇:宝塔环境Centos系统apache更换nginx后,出现了页面打开404,怎么办?

上一篇:判断是否是不是一个好论证,并说明原因

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?