热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开放源代码-PHP的MVC框架哪一个性价比最高?yii2还是thinkphp

{代码...}想讨论哪一种PHPMVC框架比较有前景(不会过一两年就散伙了)。符合以下几个特点:{代码...}
一直接触和使用的是thinkphp和codeigniter,没有用过其他的PHP MVC框架。
现在正在重构一个功能比较多的网站,但是工作时间太忙,回家时间很零散,所以需要快速完成上线。

在公司用thinkphp ci,回家里也用thinkphp来做,感觉头都快炸了,真担心全都混淆了。
所以想换一种。以前用过yii 1.x 体验不是很好,不支持命名空间,安装方法古怪。

想讨论哪一种 PHP MVC框架比较有前景(不会过一两年就散伙了)。
符合以下几个特点:

1)发行的稳定版本 支持命名空间,自动加载
2)比较出名或者流行,有很大一个使用群体
3)至少有一个正式的官网
4)性能强大,扩展性强
5)符合编程规范
6)长远角度来看,团队不会突然解散(比较看重)
7)不是小打小闹,应用很广泛。

这个问题已被关闭,原因:无法获得确切结果的问题

回复内容:

一直接触和使用的是thinkphp和codeigniter,没有用过其他的PHP MVC框架。
现在正在重构一个功能比较多的网站,但是工作时间太忙,回家时间很零散,所以需要快速完成上线。

在公司用thinkphp ci,回家里也用thinkphp来做,感觉头都快炸了,真担心全都混淆了。
所以想换一种。以前用过yii 1.x 体验不是很好,不支持命名空间,安装方法古怪。

想讨论哪一种 PHP MVC框架比较有前景(不会过一两年就散伙了)。
符合以下几个特点:

1)发行的稳定版本 支持命名空间,自动加载
2)比较出名或者流行,有很大一个使用群体
3)至少有一个正式的官网
4)性能强大,扩展性强
5)符合编程规范
6)长远角度来看,团队不会突然解散(比较看重)
7)不是小打小闹,应用很广泛。

哪个 PHP 框架更好是一个古老的问题,时至今日终于有了答案。

PHP 框架史话

PHP 是一种神奇的技术,可以嵌入 HTML 代码中执行。PHP 依赖这个前无古人后无来者的运行方式,成为了一门 “语言”。PHP 为 web 而生,伴随着 web 成长,她本身就是一个高度抽象的框架,所有内置函数,例如 phpinfo(),本质上都是强大功能的一个接口。

在本身就是 web 框架的 PHP 之上,懒惰的程序员依然想干更少的活儿做到同样的功能,所以就有了积累下来的常用函数群。然后,伴随着 PHP 的进步,又有了常用类,常用库,然后又有了常用设计模式以实现更多的代码复用,最后,一个又一个的 PHP 框架就这样诞生了。

紧接着人们发现,在把 PHP 作为主要开发语言大规模使用以后,PHP 代码的可协作性又成了一个很大的问题,于是各种 “轻量级框架” 就开始出现,其中最著名的当属 CodeIgniter 了。实际上,稍微有一点规模的团队和稍微有两年经验的程序员都会有自己的 PHP 框架,这类微框架基本只解决一个核心问题:路由。因为只有这一个东西是对所有项目都通用的。

Laravel

同时,在追求开发效率的道路上,各路重型框架层出不穷,Zend Framework、CakePHP、Yii、Kohana、Symfony、Laravel,一个比一个吹得响亮,一个比一个复杂。当下,占有率和出镜率最高的当属 Laravel 了:在国外火了一段时间了,在国内的大潮正在兴起。

Laravel 可以极大地提高开发效率。

对 Laravel 感兴趣的可以看一下我写的系列教程:Laravel 4 系列入门教程【最适合中国人的Laravel教程】,目前阅读量和反响都还不错,评论里也积累了不少常见错误和解决办法,我也会第一时间回复大家的评论。

Laravel 取得今天如此之高的成就,并不是因为作者水平有多高,PHP 经验有多丰富。实际上 Laravel 的作者 Taylor Otwell 之前是一名 .NET 程序员,本科毕业后写了三年的 .NET,然后转向 PHP,创造了伟大的 Laravel。为什么?因为没有思路上的限制。PHP 从一堆可以直接调用的 function 发展而来,为了向下兼容保留了很多非常强大的函数,正是这些函数,让 PHP 熟手们跟不上 PHP 的发展潮流,无法正视并使用 PHP5 以来优秀的新思想、新特性。如今 PHP 已经在向一门通用面向对象语言进化,具备了 类与对象、命名空间、接口、抽象类 等很多高级特性,Taylor Otwell 正是使用了这些高级特性,才构造出了今天的 Laravel。

鸟哥 Laruence 目前正在做 PHP7JIT 组件,还在开发中的 PHP7-JIT 已经比 HHVM 有了成倍的性能优势。这也是我没有提那几个 C 扩展框架的原因:JIT 一出,C 扩展框架的修改困难的劣势将大大超过那一点点性能优势,性能优势可能都会完全消失。让我们拭目以待!

Composer 一统天下

“Composer 一统天下的时代已经到来!” ——白岩松 (:-D)

Composer 可以看成一个 PHP 的包管理器,类似 Python 的 easy_install 和 pip,Ruby 的 gem,Node.js 的 npm,是一个强大的生态系统。关于 Composer 的详细介绍和用法可以参考我写的另一篇文章:利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备。

为 web 而生的 PHP 一直缺少一个 web 时代的包管理器,直至 Composer 横空出世。之前 PHP 框架的传递都是通过代码文件压缩包,多么辛酸。PHP 有一个官方的“扩展库” PEAR,但是入库标准极为严格,对代码的要求很高,而且传递代码的方式也是下载压缩包。:-(

Laravel 取得成功的另一个非常重要的原因就是依靠 Composer 社区。Laravel 采用了大量的第三方包,其中就有许多著名的 Symfony 基础组件。

到底哪个框架更好?

当下,但从开发效率和社区发展的角度讲,首推 Laravel,她也完全满足题主的几点要求。

但是强大的工具都需要长时间的学习,Laravel 学起来可能没有那么容易。当然,主要原因不在 Laravel 用了多少高级特性,而在于大多数 PHP 程序员都抱着旧 PHP 的思想不肯放手。学习 Laravel 的过程就是转变思想的过程,改变写 PHP 的姿势的过程,这个过程会比较困难,但是也能够学到很多很多。

如果广义地回答这个问题,当下最强大的框架当然是 Composer,因为她不是一个框架,是一个强大的生态系统。

关于问题中的 Yii2 和 ThinkPHP

Yii2 前几天刚刚发布,号称基于 Composer,我体验了一下,跟 CodeIgniter 3 号称的基于 Composer 是一样的:把自己发布到了 Composer 社区而已。几乎没有对其他 Composer 包的依赖,还是走的以前的老路。积重难返,止步不前。再怎么大而全也是拼不过整个社区数万个小而美的。

ThinkPHP 作为国产最流行框架我以前是很支持的,后来我因为项目要求使用了一次。当我看到 A() C() D() F() G() I() L() M() N() S() 函数的时候直接吓尿了,你知道 C() 是干啥的不?控制器 Controller?缓存 Cache?不是,人家是 Config,操作配置文件的。这样设计的代码可读性基本为零。

其他框架

Codeigniter 2 with Eloquent ORM

如果你对 CodeIgniter 比较熟悉,但是已经厌烦了繁琐的 Active Record 的话,我做了一个 Codeigniter 2 with Eloquent ORM 的项目,把 Laravel 中最强大的部分 Eloquent ORM 融合到了 CodeIgniter 2.2.0 里面。详见:给 CI 插上翅膀——在 CodeIgniter 2 中使用 Laravel Eloquent ORM

TinyLara

最后,大家也可以尝试一下我使用 Composer 构建的 Laravel 的精简版: TinyLara (官方网站:http://tinylara.com/ ),使用了 Laravel 中最强大的部分 Eloquent ORM,其他部分保持最精简,欢迎大家尝试,提出意见和建议!

反正我的意见是:框架功能越多,坑越多

你的需求恰好和框架一致那没问题,不一致的时候,框架功能越多封装越完善,死得越惨。这是典型的“基于巧合编程”

如果项目需求就是非常正常普罗大众的,那么干脆上wordpress drupal之类,配好合适的插件再微调就好
如果项目是有自己独立的需求或是需要长期维护&迭代的,框架功能越少越好

基于此我自己的答案是
5.3以前(无namespace,无composer)
自己写LitPHP
开源的考虑CI(功能还是偏多,上古时代没composer也没办法)

5.3以后(Composer & PSR标配)
lit的modern分支一直没思路,暂时有个Aether 小打小闹,随手用用
开源的考虑Slim

symfony绝对值得推荐,重型框架,学习有曲线但是收获也会很多,社区完善,企业级框架性能有保障,fig编码很多框架底层都用它来实现!
如果时间比较紧张且是中小型项目用tp吧,毕竟边看文档边做就可以实现的!
yii没用过不知道如何!

用过Yii 1.x,推荐Yii 2.0,不过确实要仔细看一次2的文档,说不定Yii就成了最牛逼的PHP框架了

yii是号称性能最为强劲的php框架,但是如果是用来杀鸡的话,我还是力挺thinkphp,文档超级仔细,它用起来方便不是因为它简单,是因为它的文档写的非常到位,非常符合中国人的习惯。现在国内很多中小企业都选用thinkphp,不信你到开源中国看看php语言的开源项目十个中八个就是基于thinkphp,铁打的事实毋庸置疑。

都j8别嘚瑟了【重点不在框架---在与个人怎么用了】【性能最高就写原生态代码了】好比武林中的打手-牛逼就牛逼-不牛逼你用什么武器都是一个【败将】

【支持tp】我用tp2.0做的3年前做的舞帝音乐传媒【无论是安全还是性能都是很高的】日访问200多万.........话不多说用实力说话~

目前在用的是 Yaf 和 Yii2, 简单独立的项目用Yaf不错, 因为很简单, 集成度不高,过于臃肿的项目就算了, yii2感觉php的代码更规范了,主要喜欢代码风格

我以前也是通过很多渠道,对比了很多的框架。从CI转到TP,近年来一直钟爱YII。2.0支持命名空间,还有一整套用来简化实现RESTful风格的Web Service服务的API。真的用起来非常爽,快转过来吧,用过才知道。
1、搞PHP还是推荐YII。叼叼的小米,就是YII的框架。
2、如果不搞PHP,强力推荐ruby。36kr就是最好的证明。

选你最熟悉的框架。 Yii 和 Thinkphp 哪个熟选哪个。
Laravel 和 Symfony2 作为学习目标。如果项目不急可以用他们来倒腾。

PHP 是一种神奇的技术,可以嵌入 HTML 代码中执行。PHP 依赖这个前无古人后无来者的运行方式,成为了一门 “语言”。

这个前无古人有点夸张,后无来者就完全是嚣张了。一个经历过时间洗礼后成熟稳重的程序员对待事物的态度是不会这么武断的,就算是PHP也是集百家之长(c的函数、c++、java和c#的类和命名空间、ASP的解析方式等等)才有今天。

我还是推荐Yii2,不过我也挺喜欢Laravel的

Y是开箱即用,CRUD一生成基于bootstrap的操作界面都有了,而且深度整合Bootstrap带列筛选、排序的GridView不容小觑,直接在themeforest上买个Admin的HTML模板写后台管理界面绝对能让你Hign飞起来。

好吧我承认我没自己买过,都是SiteSucker帮我买的。顺便推荐一下,免费的AdminLTE真的很不错,而且git上yii2的AdminLTE也有,很方便。

L的代码逻辑是比Y更稳重,从auth可以看出来,但基础路由像过家家,而且没有整合前端资源,再加上风骚的命名绝对会让人感觉跟用锤子手机一样有B格,顺便说一句,L的命令也是artisan,相比锤子只是少了smart。额,开玩笑。

我想说: L是好,Y也好;L好看,但Y好用。

看Y的guide能吸收先进思想,学会很多东西,真的。好吧,看L的DOC也能学到很多东西。在中国感觉L就像SONY,叫好不叫座。

我也用了一段时间了,发现y2的设计思想很迎合我的口味,比如oauth,快速restful,fields重命名,extraFields等等,看得出来作者确实很用心,在y1里面这些功能要么找extension,要么自己写。

还有点小事

PHP的命名空间用斜杠也就算了,那是没办法,但不能用*引用一批类让我有点不爽,还有就是对象操作符,没玩过C++伤不起啊,至今都不喜欢->,还是JAVA的.好。现在想想,其实当年PHP要是用+作为字符串连接符多好。

还能再啰嗦点么?

据说L的思维很跳跃、包装很彻底,彻底得让我即使用世界上最顶尖的PHP IDE -- PhpStorm也提示不粗来。所以我得做好心理准备了。

说了你可能不相信,我最近的一次测试发现,Thinkphp的速度比Yii快一点点,比Laravel快了非常多

附文章地址 Laravel、Yii、ThinkPHP性能测试

laravel好.

cake
http://cakephp.org/

Yaf 框架吧,用C写的php扩展,不需要加载任何PHP文件即可使用的框架,性能上也甩很多框架几条街!!

yii2不错,不过我觉得你至少需要认真读一遍 Guide。

估计楼主是昨天看了我的回答然后来问这个问题的,既然当时我建议你用YII2,毫无疑问,现在我的回答也是一样,YII2

YII2搭建网站和实现功能有多快,你可以去YII2用GIT克隆下来,按照基础模型安装方法或者高级模型安装方法安装一个试试,用不了你几分钟(第一次安装估计有点慢,因为那个composer)。

自己用过,觉得顺手才是最好的。

综合来看,推荐 Symfony2,虽然入手比较陡峭,但绝对满足你所说的“有前景”

1)发行的稳定版本 支持命名空间,自动加载
2)比较出名或者流行,有很大一个使用群体
3)至少有一个正式的官网
4)性能强大,扩展性强
5)符合编程规范
6)长远角度来看,团队不会突然解散(比较看重)
7)不是小打小闹,应用很广泛。
你这不是在推thinkphp的节奏么。。。

laravel 目前算是最火的了

laravel

TP入门,Laraval进深

想追求开发效率,Laravel和Yii二选其一
想追求性能,用Phalcon
其他的基本不用考虑了,尤其是Thinkphp

我个人推荐Yii,相比thinkPHP,Yii很多方面做得强一点。

yii还是不错的框架,从2011年开始用,到之后的版本更加完善,组件式开发,强大的widget, 并且有很多开发者来维护它,第三方组件也很完善,在stackoverflow 上的话题也很多,开发者很容易找到答案。

框架这种东西就是看哪个合适用哪个,别什么性价比,主流几个都要了解一下。高手会看场景决定使用哪种语言,普通人学几种框架要求不算过,千万别抱着哪个框架用。框架的作用1是快速开发应急,2是学习人家的思想。第二点尤为重要。

真要实打实的干起来,自己搭。这也是为什么前面说要了解多种框架甚至多种语言——这样才能取各家之长。

http://www.jitapu.me 这个吉他谱网站就是使用YII2开发的,你看看性能,快如闪电!打开本地文件一样!

推荐阅读
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
author-avatar
-MP5
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有