V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
livedutvchina
V2EX  ›  PHP

如何选择 PHP 框架?

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

    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   ·   我们的愿景   ·   实用小工具   ·   5602 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 05:56 · PVG 13:56 · LAX 22:56 · JFK 01:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.