如何选择 PHP 框架? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
livedutvchina
V2EX    PHP

如何选择 PHP 框架?

  •  
  •   livedutvchina 2016-07-19 20:53:24 +08:00 9292 次点击
    这是一个创建于 3379 天前的主题,其中的信息可能已经有所发展或是发生改变。

    PHP 是世界上最受欢迎的编程语言之。最近发布的 PHP7 令这种服务器的编程语言比以前变得更好,更稳定了。

    PHP 被广泛应用于重大的项目。例如 Facebook 就是使用 PHP 来维护和创建它们的内部系统的。 WordPress 使用 PHP 来驱动它的内部构件,得到的回报是超过 59%的网站都在使用 WordPress 作为内容管理系统。目前,有 82%的网站,它们的服务器端使用的编程语言就是 PHP 。

    本文将介绍三种最流行的 PHP 架: Symfony, Laravel 和 Yii 。将通过三种框架的比较,帮助你选择哪种框架有可能最符合你的需求。

    全文: http://www.cnblogs.com/cherry0327/p/5686126.html

    64 条回复    2018-01-31 16:53:35 +08:00
    qhxin
        1
    qhxin  
       2016-07-19 20:57:50 +08:00
    Laravel 来一发
    jhdxr
        2
    jhdxr  
       2016-07-19 21:02:32 +08:00   11
    这 TM 是机翻然后在人工稍微修正的吧?不贴原文地址也就算了,这文章写的一坨什么东西?随便摘几个例子(惨不忍睹我没看完)

    『事实上, Laravel 这个最流行的 PHP 框架建立了 Symfony 。』 WTF ? R U KIDDING ME ? laravel 基于 symfony 还差不多
    『 Yii 也是最快速的 PHP 框架,这归因于慢吞吞的加载技术。』慢吞吞的加载技术带来了最快速的框架?很好很强大。 lazy loading 都不认识么
    『模板引擎提供了诸如自动 HTML 转义和过滤功能,并填写由原生 PHP 留下的空白。』原生 PHP 留下的空白是什么鬼?
    『例如,原生 PHP 用以下冗长的代码写越狱』 越狱?
    。。。


    这种垃圾文章居然还有人推广,哪怕是出于这种推销自己账号的目的,真是一下子暴露了你们公司的实力要多么的低。。。以至于拿着狗屁不通的文章来给自己增加脸面。。。
    wh1012023498
        3
    wh1012023498  
       2016-07-19 21:06:38 +08:00
    Yii2 用了两年的美男路过~
    mahone3297
        4
    mahone3297  
       2016-07-19 21:08:22 +08:00
    symfony+1
    mahone3297
        5
    mahone3297  
       2016-07-19 21:09:17 +08:00
    不过确实,文章内容没营养。。。
    livedutvchina
        6
    livedutvchina  
    OP
       2016-07-19 21:21:34 +08:00
    @jhdxr :这位朋友你好,感谢你的指正。我虚心接受批评。刚才我重新看了文章,也把一些翻译有误的地方改过来了。因为我本人不是编程专业,有翻译得不对的地方。请大家多多包涵和指教。有兴趣的朋友,也可以阅读英文原文: https://opensource.com/business/16/6/which-php-framework-right-you
    kideny
        7
    kideny  
       2016-07-19 21:59:43 +08:00
    其实 phalcon 挺好的,就是还不支持 php7.0
    misaka19000
        8
    misaka19000  
       2016-07-19 22:41:23 +08:00   2
    难道就没有人是用 CI 的?
    luckylion
        9
    luckylion  
       2016-07-19 23:30:12 +08:00
    我用 TP,管他国产国外的还是排名第几.自己用着顺手就行
    ericls
        10
    ericls  
       2016-07-19 23:31:11 +08:00 via iPhone
    管理员管管?
    hantsy
        11
    hantsy  
       2016-07-20 00:03:48 +08:00
    Full stack 的选择,首选是 Zend 和 Symfony, 工业级设计,支持最新 PSR ,各部件可以替换,自由搭配。备胎: CI , Cake , Laravel , Yii 。

    轻量的, Slim , Silex 等。
    Balthild
        12
    Balthild  
       2016-07-20 00:47:36 +08:00
    @kideny 支持,直接用 Github 上的代码编译就行了。
    sysatom
        13
    sysatom  
       2016-07-20 09:18:02 +08:00
    Laravel +1
    zjddp
        14
    zjddp  
       2016-07-20 09:20:15 +08:00
    CI +1
    Nicksxs
        15
    Nicksxs  
       2016-07-20 09:21:28 +08:00
    thinkphp
    1023k
        16
    1023k  
       2016-07-20 09:30:16 +08:00
    phalcon +1
    chaegumi
        17
    chaegumi  
       2016-07-20 09:30:29 +08:00   1
    期待 ci4.0 吧, https://github.com/bcit-ci/CodeIgniter4 可以看到,重写了
    tabris17
        18
    tabris17  
       2016-07-20 09:31:46 +08:00
    PHP 这种结构只适合轻量框架
    Immortal
        19
    Immortal  
       2016-07-20 09:35:16 +08:00
    一直都是 yaf 喜欢代码都在自己掌控的感觉
    框架与我 有个 autoload 简单的路由
    其他都自己去实现 觉得更有控制力
    有了一定的代码积累量 很多功能直接丢自己封装的类上去就好了
    不会有大框架那种很多冗余功能
    我喜欢做加法 不喜欢做减法
    保证代码冗余最少
    likezun
        20
    likezun  
       2016-07-20 09:48:40 +08:00
    @tabris17 你错了,
    @hantsy 重要的事再说一遍:

    Full stack 的选择,首选是 Zend 和 Symfony, 工业级设计,支持最新 PSR ,各部件可以替换,自由搭配。备胎: CI , Cake , Laravel , Yii 。

    轻量的, Slim , Silex 等。
    tabris17
        21
    tabris17  
       2016-07-20 09:51:14 +08:00
    @likezun 我没错,你错了
    AbrahamGreyson
        22
    AbrahamGreyson  
       2016-07-20 09:51:24 +08:00
    @tabris17 事实上,如果你想玩设计,也是可以的, 除了不支持对象持久化, oo 方面并没有明显的短板。

    主要还是看你,在不基于 spring 、 bean 之类的框架之外, 自己能否写分层的东西来。
    Light3
        23
    Light3  
       2016-07-20 10:05:37 +08:00
    撸主你确认这是你自己写的嘛.. symfony2 社区国内很不成熟.你文中写的成熟指的是国外的?
    herozzm
        24
    herozzm  
       2016-07-20 11:08:11 +08:00 via Android
    phalcon 只是很多坑爬不出来,国内用的少
    tabris17
        25
    tabris17  
       2016-07-20 11:10:14 +08:00
    @AbrahamGreyson 问题不在语言,而在于 PHP 的运行方式。 Swoole 、 Workman 这些框架毕竟是小众。传统 fcgi 环境下,每个请求都是一个全新的上下文环境,等于每个请求都是冷启动。每个请求都要执行一遍框架的初始化代码,载入或重建上下文环境,框架越复杂,执行效率就越低下。
    livedutvchina
        26
    livedutvchina  
    OP
       2016-07-20 11:30:49 +08:00
    @Light3 :你好。这篇文章是我翻译的,英文原文: https://opensource.com/business/16/6/which-php-framework-right-you

    因为我不是编程专业的,如翻译有不对的地方,请大家多多指教。上面有一位朋友的评论言词比较激动,但我依然保留他的评论。不过,也希望留言的朋友可以注意一下。互相尊重是交流的基础。

    我也想作一下澄清:

    文章是我翻译的,可能有些专业术语的地方我误理解错误了,这个我以后会努力学习,争取进步。但细心看完文章,有些信息对编程还是有帮助的。推广此文,旨在分享与交流,当然也希望大家可以了解一下 livecoding.tv 这个网站。可能国内访问会有些卡,但我们正在解决这个问题了。至于这个网站是否对大家有帮助,大家可以自己去体验一下,再作评价。也很欢迎大家对友好的态度提出建议,帮助我们提高网站的用户体验。

    再次感谢!
    chuhemiao
        27
    chuhemiao  
       2016-07-20 11:31:22 +08:00
    sy 国外居多, ll 把国内,不过听说 yii 很强大
    iVanilla
        28
    iVanilla  
       2016-07-20 11:32:57 +08:00
    @tabris17 所以就有了这样的项目: https://github.com/StoneGroup/stone
    mcwanderer
        29
    mcwanderer  
       2016-07-20 11:54:11 +08:00
    CI
    tabris17
        30
    tabris17  
       2016-07-20 12:04:21 +08:00
    @iVanilla 基于 swoole 跑了一个 fcgi 接口的 server ?有点意思,但是不敢用于生产环境(我连 swoole 都不敢用……
    tinyhill
        31
    tinyhill  
       2016-07-20 12:56:12 +08:00
    slim +1
    jhdxr
        32
    jhdxr  
       2016-07-20 12:56:51 +08:00   2
    @tabris17 wokerman (纯 php ,然而还是依赖了一些扩展的)也可以直接拿 php 做 server ,据说性能还不错,然而我也没 /不敢 /没这需求 试过



    @Immortal 那你其实不还是重复造了许多轮子么,我觉得你可以试试看 composer ,它的意义不就在于我们不要上来就堆个框架,而是可以去选择自己想要的组件来自由组合



    @livedutvchina 你好,我就是你所说的那位『言词比较激动』,但却似乎还得感谢你没有删除我评论(你倒是删删看啊)的那位朋友。在你看来我是不是得先夸上你和你的网站一番,最后再斗胆提出几个问题才算『互相尊重』?
    (最重要的事情最先说)说到尊重,首先转载 /翻译别人的文章保留原文出处这么基本的事情你都不懂得做到,更何况 **在原文的下面原作者已经明确使用了『知识共享 署名+相同方式共享 4.0 国际』许可证( https://creativecommons.org/licenses/by-sa/4.0/deed.zh )**,而毫无疑问你的文章已经违反了。

    至于『但细心看完文章,有些信息对编程还是有帮助的。』这点我实在无法苟同。坦白说原文里有些观点和信息我也认为有些问题,例如『 Yii also is the fastest PHP framework 』『 Blade has zero overhead to application performance because the blade view files are stored in .blade.php extension 』,但你糟糕的翻译使得这篇文章问题更加严重更加难以理解,而术语的翻译错误更是雪上加霜,这不光是是否会让人难以理解文章意思的问题,而是在误导他人。
    如果你真的是抱着学习交流的态度,那么我建议你应该在显著地方附上原文地址,和一段小小的文字来说明你可能无法做到翻译准确,同时在翻译有疑问的地方不妨同时保留英文原文。

    最后,编程能力 /经验不足不是错,但既然自己知道还跑出来装(哔)那就是你的不对了。
    (发完这条就 block ,所以不用回我了
    tinyhill
        33
    tinyhill  
       2016-07-20 12:58:13 +08:00
    @tabris17 其实现在 opcache 已经能大幅降低执行的开销了,但问题的核心确实还受限于 fcgi 模式的限制。
    tabris17
        34
    tabris17  
       2016-07-20 13:02:36 +08:00
    @tinyhill 是的, opcache 治标不治本。大型应用光载入个 route table 就是个很大的开销
    BrightDawn
        35
    BrightDawn  
       2016-07-20 13:05:12 +08:00
    翻译成[慢吞吞],我觉得看了文章的人得来个黑人问号了,还哪里对人有帮助?
    BrightDawn
        36
    BrightDawn  
       2016-07-20 13:09:07 +08:00
    推广请发到推广节点,不要浪费大家的时间。
    xytjy
        37
    xytjy  
       2016-07-20 14:57:26 +08:00
    我用的 corethink ,个人感觉还不错,开源免费的,你可以百度 corethink 到官网下载看看,希望对你有所帮助
    scourgen
        38
    scourgen  
       2016-07-20 15:05:12 +08:00
    这文章基本上和那种『 10 个最好的 CSS 框架』,『 20 个最好的 JS 框架』等等文章一个路数,除了骗点击量骗骗小白之外,完全没有参考性。
    xingzhela
        39
    xingzhela  
       2016-07-20 15:20:14 +08:00
    thinkphp

    thinkphp

    thinkphp

    重要的事说三遍
    istrive
        40
    istrive  
       2016-07-20 15:22:59 +08:00
    laravel
        41
    laravel  
       2016-07-20 15:29:45 +08:00
    laravel +1
    alen
        42
    alen  
       2016-07-20 15:39:03 +08:00
    用过 cake ,看过 Laravel,目前用尔康,坑挺多的欢迎大家入坑。:手动滑稽
    good
        43
    good  
       2016-07-20 16:58:13 +08:00
    @tabris17 swoole 的性能很牛逼的, 生产环境使用了 swoole 的 websocket, 虽然刚开始经常 coredump,作者很热心,联系作者能很快的处理 BUG,目前线上非常稳定
    tabris17
        44
    tabris17  
       2016-07-20 17:03:26 +08:00
    @good 我还是胆小,等成为业界标准了再说吧
    sunsh217
        45
    sunsh217  
       2016-07-20 18:33:50 +08:00 via Android
    ci +1
    gavinczhang
        46
    gavinczhang  
       2016-07-20 18:55:55 +08:00
    我认为框架只要提供好几个功能点就足够了

    1. autoload
    2. dev/pro 分离(包括 config 自动载入不同目录下)
    3. mvc (不需要所谓的 Smarty 等模板引擎, php 语法足够优秀易懂)
    4. db/redis/orm ( ORM 可以实现读写分离,锦上添花而已,毕竟有中间层可以更专业的解决这个问题)
    5. router

    另外我对一些主流框架(官网提供的最新版)做了性能压测
    CodeIgniter 、 yaf 、 yii 、 laravel 、 swoole framework 、 kohana 、 thinkphp

    把框架独立到某目录下,其他项目的入口文件统一读取此目录内的框架资源
    controller 中载入 view 并传递 title , view 中直接 echo $title ,关闭 debug 等其他调试开关

    php7 环境下, 2.5GHZi7 16G 内存
    siege -c 500 -t 5s 并发 500 持续 5s

    结果:
    yaf 1600>swoole 1400>ci 600>thinkphp 280>kohana 277>yii 205>laravel 76
    (自己基于上述的 5 个观点开发的小框架,压测性能达到 1500 )

    仅供参考。

    详情:
    http://blog.bingxuecandong.com/?p=262
    iVanilla
        47
    iVanilla  
       2016-07-20 19:47:29 +08:00
    @tabris17 这个项目确实是 Alpha 阶段,目前不建议用于生产环境,我自己用 PHP7 的 runkit7 的话,会出错的,到时让作者看看。
    PHP5 的 pecl 版 runkit 应该没问题(这个扩展目前还不支持 PHP7 ),不知用 Stone Server 能不能在 PHP7 跑,我使用的是 Web 模式。
    ThreeBody
        48
    ThreeBody  
       2016-07-20 20:11:01 +08:00
    翻译得真的是很烂很烂,很多问题,如同上面有人说的,这就等于垃圾营销内容
    看了楼主的发帖纪录,全 TMD 是都是推广软文
    ghostsf
        49
    ghostsf  
       2016-07-20 20:17:07 +08:00
    为什么没人说 TP5
    AbrahamGreyson
        50
    AbrahamGreyson  
       2016-07-21 00:41:13 +08:00
    @tabris17 如果你对轻量的定义就是是否能最大限度的利用计算机资源,那我们没在一个层次上讨论问题。 PHP 自然有他独特的适用场景,我们的讨论都是建立在这个场景之上(你要去使用),而不是深挖坟的说哇我不会横向扩容哦。
    brando
        51
    brando  
       2016-07-21 12:10:25 +08:00
    Drupal 7 我用的是这个。
    breeswish
        52
    breeswish  
       2016-07-21 12:50:37 +08:00
    Phalcon 有些东西比如 template engine 功能残缺,最后还是要换专业的来,比如好用的 twig 。

    很多框架大而不全,想用一小部分功能都不行,还是得整个引入;需要的功能没有的时候还是要用其他的

    最后, symfony 大法好,谁用谁知道,不仅天生对接的是领域最优秀好用的组件(比如 twig, doctrine ),而且各个组件都可替换。只是性能不好。
    iVanilla
        53
    iVanilla  
       2016-07-21 16:51:18 +08:00
    @breeswish Laravel 不服(虽然底层还是用了 symfony )
    breeswish
        54
    breeswish  
       2016-07-21 22:32:41 +08:00
    @iVanilla Laravel 那模板简直玩具吧= =
    iVanilla
        55
    iVanilla  
       2016-07-22 09:58:04 +08:00
    @breeswish Blade 比 Twig 好用就是了,就算是玩具也非常强大, Twig 能套原生 PHP ??? Blade 就能。
    breeswish
        56
    breeswish  
       2016-07-22 10:24:44 +08:00
    @iVanilla 用原生 PHP 明明是在倒车,那么想用原生 PHP 那还用什么模板 :P
    breeswish
        57
    breeswish  
       2016-07-22 10:28:35 +08:00
    @iVanilla 玩具的意思是不具有用于工业级项目的严谨性和规范性,和强大没有什么关系。允许 Eval 就可以做任何事情了,某种程度上可以说这很强大,然而这和玩具没什么关系...
    iVanilla
        58
    iVanilla  
       2016-07-22 10:40:52 +08:00
    @breeswish 之前在微信群里跟某人争论过 PHP 原生代码和模板引擎,他反对使用模板引擎,说“你是人,你非要套一层猪皮,说:这才是人” 我竟然无言以对。
    如果原生 PHP 这么好就不会有人开发模板引擎了,模板引擎很方便,虽然原生 PHP 也能做到,但模板引擎的目的就是让程序猿写着方便。
    demon
        59
    demon  
       2016-07-22 11:54:33 +08:00
    kopa
        60
    kopa  
       2016-07-22 15:04:11 +08:00
    CI 的路过
    mingyun
        61
    mingyun  
       2016-07-23 22:43:30 +08:00
    目前团队用的 laravel5
    xytjy
        62
    xytjy  
       2016-07-25 15:06:42 +08:00
    我用的是 corethink ,轻量易上手、代码质量高,官网有免费下载
    hyiier
        63
    hyiier  
       2016-07-27 14:17:50 +08:00
    果断推荐 yii2 ,快速开发,教程多多,比如 www.yii-china.com 就是 yii2 写的
    hhxsv5
        64
    hhxsv5  
       2018-01-31 16:53:35 +08:00
    LaravelS github.com/hhxsv5/laravel-s 通过 Swoole 加速 Laravel,(Laravel+Swoole) 兼顾开发效率与性能。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2769 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 13:37 PVG 21:37 LAX 06:37 JFK 09:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86