最好的PHP框架有哪些

首推 Laravel ,其次是 Yii,Laravel 的设计思想以及在工程实践上的支持,超过 ThinkPHP 好几个世代。如果说原生的 PHP 是火枪, ThinkPHP 就是来福枪,Lavavel 则是冲锋枪。你要打猎的话,带把来福枪完全足够了,但是要上战场,非得更自动化的冲锋枪不行。

好处有很多啊:

  • Composer 做包管理
  • 标准的 Autoload 实现,可以让 `include xxx.php` 成为历史
  • 各种依赖注入
  • ORM 支持
  • 好用的命令行和脚手架
  • 丰富的文档和活跃的社区

即使有这么多好处,也不过是追赶了几年前 ROR 的水平,还在用 ThinkPHP 的人,不过是懒得接触新知识罢了。

说ThinkPHP适合国人使用的人,自黑的时候不要带上别人,多谢。

在PHP5.3之后,PHP-FIGComposer给PHP社区带来了巨大的变化,如果一个框架还没用到Composer,还是invent everything here,就真的有点落伍了。
有了Composer的支持,像攒电脑一样实现一个自己的框架也不是多困难的事儿了,但是要做出一个“好”框架还是挺困难的一件事。项目用过的框架6个(ZF1,SF2,CI,Yii,Laravel4,Silex),了解过的就不数了,见过的框架中最优秀的当属Laravel4,解释如下:
  1. 直接。各种常用的功能都由一些简单的Service实现,通过Facade访问,很多常见的问题都简单优雅的处理了,接口设计很贴心,大部分使用场景都替你考虑到了。由于功能简单直接,文档也就无需赘言,官网上的文档也不是太多,看一遍完全可以开始干活儿。
  2. 开放。有了Composer,优秀的代码可以很方便的引入项目,Laravel的框架就用到了boris,whoops,monolog,swiftmailer和symfony下面的一批基础类库,而不是非得自己写的代码才放心。
  3. 简单。不只是使用上的简单,框架本身的实现也不像别的“企业级”框架那么沉重,各个功能见很少的耦合,通过依赖注入容器组装起来。要从源代码里挖掘框架内部的实现也没有那么多抽象层级。

另外,PHP新手还是从PHP The Right Way开始学吧,对新时代的PHP有个正确的认识,CI适合的是还在用<PHP5.2的老人,不是新手

这里列几个客观数据(截止至 2017 年 1 月 2 日):

一、Github 上 PHP 项目排行第一

Laravel 作为这一页里最晚出现的框架,Star 数量远远高于排名第二的框架。链接在此 Build software better, together

&amp;lt;img src="https://pic4.zhimg.com/50/v2-71d689b04cc5cce06afc171d8780eeed_hd.jpg" data-caption="" data-size="normal" class="content_image"&amp;gt;

 

二、Google 趋势排第一

Laravel 跟其他框架的对比图,链接在这里 https://www.google.com/trends/explore?date=2006-08-16 2016-09-16

&amp;lt;img src="https://pic1.zhimg.com/50/v2-04c39f47e01b3626882ddeb1d46914f3_hd.jpg" data-caption="" data-size="normal" class="content_image"&amp;gt;

 

三、用户投票排名第一

编程网站 Sitepoint 上的用户调查第一名,链接: The Best PHP Framework for 2015: SitePoint Survey Results

&amp;lt;img src="https://pic3.zhimg.com/50/v2-7ee7f007da72ffe15a394e93c993f0c5_hd.jpg" data-caption="" data-size="normal" class="content_image"&amp;gt;

 

Laravel 在国内的生态圈发展也日趋成熟,你可以很轻松的在网上找到很多 Laravel 相关的中文学习资料、技术讨论社区等。下面是推荐的几个网站:

------------------- 更新于: 2016. 12. 11 ------------------

Laravel 第一部中文新手书籍《Laravel 入门教程》发布

Laravel 大 Logo 卫衣来了

Laravel 5.3 中文文档翻译完成

线下聚会正在进行中 :

Laravel Dinner 第一期 (北京站) 和第二期 (深圳站) 完美收官啦!

[Laravel Dinner 03 期][上海] 线下聚会开始报名啦

------------------- 更新于: 2016. 08. 18 ------------------

Lumen 5.1 中文文档翻译完成「精校版」_PHPHub

Laravel 5.1 LTS 速查表重磅发布_PHPHub

PHP 标准规范中文版发布_PHPHub

------------------- 更新于: 2014 . 09. 02 ------------------

Laravel China is ready Laravel 中文文档 , 欢迎发起 issue 提交纰漏 和建议 --> Laravel China · GitHub

------------------- 更新于: 2014 . 08. 17 ------------------

PHPhub - PHP &amp;amp; Laravel的中文社区 一个干净的 PHP 中文社区一直是我的梦想, 这几天动手写了一个, 今天算是正式上线, 虽然还有好多功能需要优化, 欢迎大家加入, 给我点动力, 哈哈.

使用 Laravel4 编写的, 代码也是开源的 summerblue/phphub · GitHub

------------------- 更新于: 2014 . 03. 06 ------------------

一个比较有说服力的数据:

Laravel 是 Github 上最有名的 PHP 项目, 8627 个 star, 领先第二名的 Symfony 和 第三名的 CI 接近 1000个 star, 见这里 --> Most Star PHP Project On GitHub

ci 和 symfony 得话多少年才能达到今天的影响力, 而 Laravel 的第一个 commit 发生于 Jun 09, 2011 , 见下图:

&amp;lt;img src="https://pic4.zhimg.com/50/c54d5b858d8e40cb883406e5e492de5e_hd.jpg" data-caption="" data-size="normal" class="content_image"&amp;gt;

 

---------------- 首次发布 ---------------------

Laravel4 , 整个 PHP 社区都为之疯狂的框架.

Laravel4 讲究的是最佳实践, 是一个积极向上的框架, 向 牛B 的 Rails 看齐, 借鉴了很多在成熟框架已经体现出来很成功的元素:

  1. RESTful Routing ;
  2. 设计精妙的 Blade 模板引擎, 轻快, 不失灵活 ;
  3. 合理的 ORM model 层, Eloquent ORM , 借鉴于 Rails 的成功;
  4. migration 数据库版本系统 和 seeding ;
  5. 使用包管理器 Composer , 打开了一扇开往春天的门;
  6. 强调测试驱动, 整个核心经受过完整的测试, 高质量的代码;
  7. 命令行驱动, 可以做到高度自动化 (讲究效率, 代码生成器...) , 借鉴与 rails ;
  8. 合理使用 PHP 的新版本特性, 让写代码更加有乐趣, 跟上时代的步伐;
  9. 积极向上的社区, 这个很重要呀, 大家都在学习着, 创造着好的工具, 加快开发速度, 提高编程效率, 接受新知识的速度也很快.
  10. 对 php 标准化的支持 PHP-FIG — PHP Framework Interop Group

另: 以下几个链接供参考

Best PHP Frameworks for 2014

Why Laravel is Taking the PHP Community by Storm

The future of web development is Laravel

2014 我有个愿望, 希望 PHP 社区一盘散沙的局面成为过去, Laravel, Composer, PHP-Fig 才是未来, 快速开发, 遵守规范, DRY, 构建一个团结的社区, 聪明, 理智的社区.

没有一个比现在更合适的时间了, 朋友们, 把我顶起来吧, 让 PHP 的新人和老鸟都知道在 PHP 社区里面, 有这么一个好东西的存在, 也算为 PHP 社区做贡献. May God be with You.

------------------------------------- END -------------------------------------

和大家一样,论强大推荐Yii。

  • yii框架是首选,文档齐全,面向对象很彻底,性能超群。实例化模型以后很多组件都能用上,唯一不喜欢的是查询出来的数据操作都是对象式的,我还是比较喜欢数组方式,只好用chtml::listData()转化。另zii wigdet对于提高开发速度非常牛逼。
  • 其实thinkphp 3真的很不错,而且容易上手文档更全更适合国人。我个人比较喜欢thinkphp的db部分route rest部分。
  • zend framework 更加像一个超大超全的类库,虽然运行速度有点慢,很多框架都留有zend类的接口,其价值可见一斑
  • codeigniter没仔细看,不敢妄言,中文支持比较少,很多人用的是他的分支版,kohana,有兴趣的话可以看下。
  • 最后说一下speedphp,这个框架的设计思想我很喜欢,简单高效,有sae版,扩展方便,适合改造,速度也不错,我开发社交游戏就喜欢用这个框架改造。

说了这么多,框架还是要适合你的业务才是最好的。

 
ZF1,2 , Symfony用了挺长时间,现在喜欢上了Laravel ,推荐给大家,文档齐全,新手也很好上手。
 
 

好的定义是什么?
设计模式好?
代码规范?
文档详细?
注释明了?

不知什么时候起,知乎上好像有一股黑thinkphp风气,就像java程序员鄙视php程序员php程序员鄙视asp程序员asp程序员鄙视易语言程序员易语言程序员鄙视authorwave一样

不说thinkphp其他方面怎么样,人家的的确确是一个沉淀了八年的作品,从头到尾没有收过你一分钱完善的开发文档本土化做的很不错。(这算黑点吗?)社区运营确实存在问题(广告,hr泛滥,提个问题没人解答),但是他的确是一个让广达中国php程序员能过快速认识mvc,框架,CBD(thinkphp3.2之后的确做到了cbd,完全可以对框架底层定制化开发),包括orm等等,虽然他在某些方面的确算不上一个顶尖优秀的框架,但是从学习入门型框架的角度来看,他的确可以算得上是一个简单,轻量,适合一个完全没有接触过mvc框架的小白门用来入门和学习的框架了。

况且像腾讯右侧栏里面大多数推广网站,极客学院的后台以及很多中小型创业公司都在用他。包括国内最广的weiphp框架也是基于tp3.2开发的,稳定性和广泛性可见一斑。

最后说一点,整个IT行业现在都很急功近利,追求的是敏捷开发,短期效益,thinkphp只不过恰好迎合了这种形式。要背锅的应该是整个大环境(体制说:怪我咯¯\_(ツ)_/¯)不要总是无脑怪罪到thinkphp本身或者用thinkphp的人身上,更不要站在技术制高点谩骂thinkphp的作者,这样只会体现用其他高端有逼格框架的人的素质下限。

 
 

上面很多朋友也说了。
没有最好的,只有更适合自己的。

并不是所有项目都适合用框架的,我个人的观点是,团队项目是一定要用框架的。这样可以使整个项目保持统一的接口、编码风格,为以后的后续维护降低成本

关于是否要用框架的文章,昨天刚看到一篇好文章,这里一起分享:

《好代码不值钱》http://www.aqee.net/2011/03/16/good-code-is-cheap-code/

我不是很赞同自己写框架的说法,原因有二:
1.时间成本:一个框架要涵盖的内容是比较广泛的,一个成熟稳定的框架也不是几个工作日就可以完成的。我们应该站在巨人的肩膀上,而不是总想着去自己造轮子。
2.学习成本:团队中自己开发的框架,一般是由1~2个核心人员来完成的。其中可能包含了比较多的个人风格,文档也可能不会很健全。使用这样的框架开发过程中如果团队中有人员调整,将是一件很痛苦的事。

在选择适合自己的框架的时候,也有两点小建议:
1.文档丰富,之所以把这个做为首要建议也是考虑到团队合作的情况下,新人可以快速上手
2.有在维护更新,不要去用那些已经过时的框架。一个框架如果很久没有更新,起码可以说明用的人不多,基本可以忽略。另外,如果能用社区或者商业公司在维护的框架,最好不要用个人维护的框架,也是考虑到风险成本。

 
私以为任何东西都没有最好,只是不同的取舍。你说YII好,但是学习曲线太高。你说CI好,但是封装太简单,没做多少事。你说yaf好,我tm还得编译个扩展上去。

最好的PHP框架有哪些的更多相关文章

  1. 避免重复造轮子的UI自动化测试框架开发

    一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...

  2. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  3. 旺财速啃H5框架之Bootstrap(五)

    在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...

  4. Angular企业级开发(5)-项目框架搭建

    1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

  5. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  6. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  7. 旺财速啃H5框架之Bootstrap(四)

    上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...

  8. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  9. Hibernatel框架关联映射

    Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...

  10. [虾扯蛋] android界面框架-Window

    从纯sdk及framwork的角度看,android中界面框架相关的类型有:Window,WindowManager,View等.下面就以这几个类为出发点来概览下安卓开发的"界面架构&quo ...

随机推荐

  1. 前端之HEML

    HTML介绍 Web服务本质   import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen ...

  2. Ubuntu16.04下将hadoop2.7.3源代码导入到eclipse neon中

    0.为什么会有这篇: 这篇文章的目的在于帮助想学习hadoop源码的内容,却在导入的过程中出现了各种问题的人. 或许你一定找了很多博客都无果,那么不用担心,我和你一样,这也是这篇文章存在的意义,废话少 ...

  3. cookie,session,viewstate

    viewstate的原理是隐藏域. protected void Page_Load(object sender, EventArgs e) { ViewState["v1"] = ...

  4. Aspose.Words进行Word替换(插入图片和水印)

    由于最近一直在忙着做着Word打印模板的一些工作,就整理一些Asponse.Words对Word文档进行操作的资料. using System; using System.Collections.Ge ...

  5. 状态模式(state)C++实现

    状态模式 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类 ...

  6. css3伸缩布局中justify-content详解

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. B站真的是一个神奇的地方,初次用Python爬取弹幕。

    "网上冲浪""886""GG""沙发"--如果你用过这些,那你可能是7080后: "杯具"" ...

  8. Validate US Telephone Numbers FreeCodeCamp

    function telephoneCheck(str) { // 祝你好运 //var re = /^1? ?(\(\d{3}\)|\d{3})[ |-]?\d{3}[ |-]?\d{4}$/; / ...

  9. CentOS6.6安装mysql-5.7.25二进制安装包简易教程

    #####1,安装前首先确认系统版本 [root@bogon:~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@bogon:~] ...

  10. 路飞学城Python-Day141

    什么是爬虫    爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程. 爬虫的目的就是为了模拟浏览器进行网络数据访问               抓取数据的两种方式          ...