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

大家觉得好用的 PHP 框架有哪些啊?

  •  
  •   ibiger · 2015-09-17 15:09:55 +08:00 · 8064 次点击
    这是一个创建于 3390 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Yii 这个用起来好啰嗦。

    97 条回复    2017-08-13 11:49:33 +08:00
    hahasong
        1
    hahasong  
       2015-09-17 15:13:14 +08:00   ❤️ 1
    vibrance
        2
    vibrance  
       2015-09-17 15:15:27 +08:00
    dedecms
    ianisme
        3
    ianisme  
       2015-09-17 15:16:09 +08:00
    yaf
    cxbig
        4
    cxbig  
       2015-09-17 15:17:50 +08:00
    目前 PHP 人气高、范围广的空框架是:
    Laravel > Symfony > ZF2
    66beta
        5
    66beta  
       2015-09-17 15:19:13 +08:00
    CodeIgniter > Laravel > others
    flydogs
        6
    flydogs  
       2015-09-17 15:20:27 +08:00
    yiiframework
    fangwenda
        7
    fangwenda  
       2015-09-17 15:20:52 +08:00
    CodeIgniter 3 ,继续不需要多余的配置,基本常用的功能都有,实在没有的还可以用 composer
    fising
        8
    fising  
       2015-09-17 15:21:36 +08:00
    yaf 蛮好的
    mahone3297
        9
    mahone3297  
       2015-09-17 15:24:46 +08:00
    symfony , laravel
    simapple
        10
    simapple  
       2015-09-17 15:38:35 +08:00
    最近的几个项目能自己决定的,都是 codeigniter ,比较随意
    zjq426
        11
    zjq426  
       2015-09-17 15:56:54 +08:00
    没有人提 cakephp ?
    abelyao
        12
    abelyao  
       2015-09-17 15:58:28 +08:00 via iPhone
    喜欢 CodeIgniter ,轻量级的喜欢 Flight
    Moker
        13
    Moker  
       2015-09-17 15:58:40 +08:00
    laravel 最近在学这个。。。
    MrJing1992
        14
    MrJing1992  
       2015-09-17 15:59:20 +08:00
    Laravel +1
    sun522198558
        15
    sun522198558  
       2015-09-17 16:00:24 +08:00
    我来提 cakephp
    programcat
        16
    programcat  
       2015-09-17 16:03:52 +08:00
    Yaf--最快的 PHP 框架,由 Yaf 打造出来的快如闪电的博客系统 http://www.programcat.com/
    gaitana
        17
    gaitana  
       2015-09-17 16:04:39 +08:00
    自己封装一下数据库查询类,其它直接用原生 php ,难道只有我一个人觉得 PHP 不需要框架吗?
    rogeecn
        18
    rogeecn  
       2015-09-17 16:06:45 +08:00
    @programcat 请问 yaf 如何使用 COMPOSER?
    suckMyballs
        19
    suckMyballs  
       2015-09-17 16:09:17 +08:00
    @gaitana 成型的团队还是用框架好,个人用不用看爱好了
    linauror
        20
    linauror  
       2015-09-17 16:53:27 +08:00
    CodeIgniter +1
    tianrunlin
        21
    tianrunlin  
       2015-09-17 19:57:53 +08:00
    群众投票

    aravel/laravel
    A PHP Framework For Web Artisans
    Updated 2 days ago
    PHP 10,794 4,258


    symfony/symfony
    The Symfony PHP framework
    Updated 9 hours ago
    PHP 10,610 5,472
    bcit-ci/CodeIgniter
    Open Source PHP Framework (originally from EllisLab )
    Updated a day ago


    PHP 6,632 3,848
    yiisoft/yii2
    Yii 2 framework main development repo
    Updated 5 hours ago


    PHP 6,053 2,744
    cakephp/cakephp
    CakePHP: The Rapid Development Framework for PHP - Official Repository
    Updated 43 minutes ago

    https://github.com/search?l=PHP&o=desc&q=framework&s=stars&type=Repositories&utf8=%E2%9C%93
    sunchuo
        22
    sunchuo  
       2015-09-17 20:00:13 +08:00
    kohana
    adexbn
        23
    adexbn  
       2015-09-17 23:49:01 +08:00
    我说个你们看不上的, LightVC
    viko16
        24
    viko16  
       2015-09-17 23:54:51 +08:00
    被你们这么一说我又有了重拾 CI3 的勇气了
    master
        25
    master  
       2015-09-18 00:02:26 +08:00
    @rogeecn 在配置里面把 yaf.use_spl_autoload 打开
    然后在 Bootstrap 里面把 composer 的 autoload 注册上
    然后就该怎么用 composer 就怎么用了吧
    lavadore
        26
    lavadore  
       2015-09-18 00:07:46 +08:00
    laravel, laravel, laravel

    好用的框架要说三遍!
    sudoz
        27
    sudoz  
       2015-09-18 01:45:56 +08:00 via Android
    骚年,转 ROR 还来得及
    msg7086
        28
    msg7086  
       2015-09-18 01:52:58 +08:00
    @gaitana 路由自己写? ORM 缓存自己写?视图解析器自己写? DB Migration 系统自己写?
    想想就想死。
    Dukec
        29
    Dukec  
       2015-09-18 04:42:02 +08:00
    Laravel.
    zaishanfeng
        30
    zaishanfeng  
       2015-09-18 08:20:26 +08:00 via Android
    这还用问吗, 毫无疑问是 laravel 呀 用过 n 种框架的路过
    jaguar
        31
    jaguar  
       2015-09-18 08:46:05 +08:00 via Android
    thinkphp 万岁
    acking
        32
    acking  
       2015-09-18 09:09:14 +08:00
    没有人点一下 Phalcon
    moxuanyuan
        33
    moxuanyuan  
       2015-09-18 09:14:51 +08:00
    用了 N 年 CodeIgniter
    ssjssh
        34
    ssjssh  
       2015-09-18 09:24:09 +08:00
    @ibiger 我就用过 Yii ,求问这个框架什么地方比较啰嗦啊,我觉得还好啊。
    jejer
        35
    jejer  
       2015-09-18 09:35:15 +08:00
    fatfree framework 看起来没人提啊
    wolfan
        36
    wolfan  
       2015-09-18 09:45:15 +08:00
    @vibrance dedecms 是框架?????
    hantsy
        37
    hantsy  
       2015-09-18 09:59:10 +08:00
    从框架设计上, Symfony 是引领 PHP 的,适合大型应用开发。 Zend 3 以后也是模块化路线,不再什么都是自己一套了。
    lyz1990
        38
    lyz1990  
       2015-09-18 10:11:58 +08:00
    刚入门,只用过 Laravel ,感觉挺好用的
    gaitana
        39
    gaitana  
       2015-09-18 10:30:48 +08:00
    @msg7086
    1 、 PHP 干嘛要用路由?又不是 python 、 ruby 。 topic.php?tid=12345 一样可以 restful , restful 在心中不在手中。
    2 、 PHP 的渣语法和渣表现力,写不出 rails 那种优雅的 ORM 的,不如直接用原生 sql , phpstorm 的智能提示对 sql 的支持很好,并且自动提示表名字段名,开发维护不比 ORM 慢。
    3 、 PHP 天然的模板语言,不需要再画蛇添足用个试图解析器了。
    4 、 PHP 有好的 DB Migration 吗?印象中就 laravel 有一个蹩脚的 migration ,还不如不用。
    lavadore
        40
    lavadore  
       2015-09-18 10:33:35 +08:00   ❤️ 4
    @gaitana 呵呵,典型的个人小作坊思维
    luoer
        41
    luoer  
       2015-09-18 10:36:06 +08:00
    slim
    kikyous
        42
    kikyous  
       2015-09-18 10:38:23 +08:00 via Android
    @gaitana 你这是守旧派,不思进取
    估计是复制粘贴型 phper

    我是 rails 开发刚学的 laravel , laravel 的 orm 很优雅, migrate 也很好用,几乎和 rails 一样
    ychongsaytc
        43
    ychongsaytc  
       2015-09-18 10:39:04 +08:00
    @gaitana 固定在 PHP 这门语言不歪楼的前提下,轮子越造越多,如果有足够的时间精力去维护的话还好,否则到头来就像月光族一样,几年时间过去,发现什么也没留下。
    qinenqiang
        44
    qinenqiang  
       2015-09-18 10:41:58 +08:00
    Laravel 用的还不错~~
    barbery
        45
    barbery  
       2015-09-18 10:42:05 +08:00
    phalcon 谁用谁知道
    Wangxf
        46
    Wangxf  
       2015-09-18 10:47:28 +08:00
    作为前端来说,觉得 thinkphp 还蛮好上手的
    tonitech
        47
    tonitech  
       2015-09-18 10:53:49 +08:00
    thinkphp
    chaucerling
        48
    chaucerling  
       2015-09-18 10:55:10 +08:00
    用过 CI ,简单但功能不够强大
    DualWield
        49
    DualWield  
       2015-09-18 10:55:34 +08:00
    @gaitana
    1 、 PHP 如果不用路由的话,那比如 artical/2/post 这种 restful api 如何表达呢?
    2 、我没有写过 rails 的 orm ,但是我觉得 laravel 的 orm 就挺好用的,至少比写原生 sql 要爽的多。
    3 、解析器的好处有很多,当应用越多越大越来越复杂的时候,一个简单明了的解析器能够帮助前端工程师更好的掌管 v 层,后端可以把重心放在数据处理的区域。
    4 、 laravel 的 migration 确实比较蹩脚,但是用来做数据库的备份和迁移还是很棒的。

    框架一直在进步~~
    meteor2013
        50
    meteor2013  
       2015-09-18 10:57:57 +08:00 via iPhone
    CodeIgniter 非常非常非常好,重要的事情说三遍
    gaitana
        51
    gaitana  
       2015-09-18 11:01:22 +08:00
    @DualWield
    1 、 article.php?id=2&action=post ,或者干脆 article.php?id=2 ,在服务端判断 get 还是 post ,我喜欢在全局文件中定义一个常量 define ('REQUEST_METHOD', $_SERVER['REQUEST_METHOD']); ,然后在 article.php 中:

    if (REQUEST_METHOD == 'GET') {
    //do something
    } elseif (REQUEST_METHOD == 'POST') {
    //处理 POST 提交
    }
    BOYPT
        52
    BOYPT  
       2015-09-18 11:03:41 +08:00
    小作坊的话, Slim 这类轻量框架还是不错的。
    重量级框架和轻量级框架应该区别对待,没有可比性。
    laobaoabc
        53
    laobaoabc  
       2015-09-18 11:07:59 +08:00
    CodeIgniter + composer
    kikyous
        54
    kikyous  
       2015-09-18 11:11:21 +08:00
    @gaitana 那些先进的让人惊叹的技术我们造不出来,但是别人造出来了我们却拒绝去学习拒绝去使用,那我们就没有未来了
    gaitana
        55
    gaitana  
       2015-09-18 11:21:47 +08:00
    @kikyous PHP 语言特性决定了不适合造框架,原生语言用的熟的话比框架更方便,或者说 php 的框架无一例外的都很难用。

    如果用框架的话推荐 rails 和 django ,这才是真正让人爱不释手的框架。
    kuochung
        56
    kuochung  
       2015-09-18 11:27:55 +08:00
    @gaitana 不需要框架+1 ,框架这种东西听起来就觉得重。另外一部分 PHP 程序员都只是学了基本语法然后钻进某框架里。框架可能帮有些人完成了大部分工作,也或多或少成为一部分人 PHP 进阶之路的“拦路虎”。
    curiousjude
        57
    curiousjude  
       2015-09-18 11:54:48 +08:00
    @gaitana 能具体解释一下「 PHP 语言特性决定了不适合造框架,原生语言用的熟的话比框架更方便」吗?
    Felldeadbird
        58
    Felldeadbird  
       2015-09-18 12:06:14 +08:00
    @gaitana 我认同你的观点。所有 PHP 其实打包一下数据库类,在弄一个简单的 MVC 架构就可以快速做产品了。弄那么多复杂的东西,我不相信他们能够直接就做到 大并发处理。
    gaitana
        59
    gaitana  
       2015-09-18 12:12:45 +08:00
    @curiousjude
    1 、 php 的表现力不行,不要说 ruby ,连 python 都不如, django 的 orm 用 php 做不到那么精炼。
    2 、从观感上, php 不适合封装的太厉害,$Article::object->where ('xxx')->order_by ('xxx')->limit ('xxx')->run (); 这种方法链丑爆了有木有?用原生 sql 看上去都比这清爽。
    如果用 python : Artice.object.where ('xxx').order_by ('xxx').limit ('xxx').run ()要清爽很多, ruby 更不用说了, DSL 能魔幻到接近自然语言。

    3 、 PHP 是为 web 而生的语言,几乎所有 web 方面的需求都有相关的内置函数,这是 PHP 最特色的地方。 python 、 ruby 必须用框架是因为没有框架就没法做 web 开发,它们是通用型语言,直接用来写 web 就像用 C 语言写桌面程序,会把人累到吐血。而 PHP 生于 web ,天生就是为 web 开发打造的。很多时候,一些需求明明 php 有内置的函数了,一些框架非要用类方法再实现一次,满屏的 $Classname::method ()这种跳用丑爆了有木有?并且这样会对新人造成误导,让他们以为 php 是跟 python 、 ruby 一样的通用语言,只去学习 php 作为通用语言的基本语言,而不去深入 php 最强大的地方:一大堆命名混乱不堪但功能无所不包的内置函数。
    curiousjude
        60
    curiousjude  
       2015-09-18 12:13:34 +08:00
    @Felldeadbird 这不就是用框架了吗? 所以不能说 PHP 不应该用框架。按照你们的观点,应该是说市面上没有好用的框架。
    maddot
        61
    maddot  
       2015-09-18 12:18:25 +08:00
    笑死了,理由里果然有 PHP 用->,而别的语言用.
    raincious
        62
    raincious  
       2015-09-18 12:19:05 +08:00
    @gaitana

    这不是正确的回帖格式。正确的格式是:

    我使用纯 PHP ,在没有使用任何框架的情况下,支撑了_万行源代码的程序,并且承载了___万访问量。平均故障率低于千分之_。
    xuxu
        63
    xuxu  
       2015-09-18 12:23:20 +08:00
    @gaitana 人家来问大家觉得好用的 PHP 框架,主题不是讨论哪个语言好用。
    不用理我 我就是来看看大师们讨论。
    gaitana
        64
    gaitana  
       2015-09-18 12:23:54 +08:00
    @curiousjude MVC 架构不等于用框架,一个__autoload 函数就可以让一个类对应一个同名 php 文件,此为 M , V 更好办了, php 是天生的模板语言,在 html 里面使用<?= $var ?>跟 rails 模板的<%= var %>有区别吗?至于 MVC 中的 C , article.php 、 user.php 、 comment.php 这些就是 C ,用一个 include 语句包含模板文件,也可以在 C 中实现 restful :
    articel_add.php
    article_index.php
    article_update.php
    article_destroy.php
    或者:
    article/add.php
    article/index.php
    article/update.php
    article/destroy.php
    gaitana
        65
    gaitana  
       2015-09-18 12:26:55 +08:00
    @raincious 按我 63 楼自己实现的 MVC 架构,可维护性丝毫不低于框架。至于支撑访问量,原生 php 肯定会比框架高几个数量级的,框架越大越臃肿越慢。
    raincious
        66
    raincious  
       2015-09-18 12:49:06 +08:00
    @gaitana

    首先,凭借“肯定会比框架高几个数量级的”这句话,我能猜测你并没有数据来证明你的观点么?

    第二,其实你这么做之后,慢慢的就会发现自己整出了一个框架。事实上我第一个框架就是这么来的。但是这种方式整出来的框架十有八九有问题,因为历史代码太多,很难形成一个完善的程序流,远不如一开始就 Follow 一个框架的开发规范,这样开发流程还能相对稳定些,大家配合也会好很多。

    我想说的是,任何东西的存在都是有合理性的。常见的场景是,当你遇到了某种瓶颈之后,自然而然的就回去想着用某种方式解决。你有没有考虑过各种各样的“框架”实际上就是这种东西的产物?所以不要因为你用不到而认为所有人都用不到。
    curiousjude
        67
    curiousjude  
       2015-09-18 12:54:18 +08:00
    @gaitana 我觉得你没有说服我。
    1. ORM 的问题,你举的例子没有说服力,「->」和「.」哪个更好看这个完全是主观的,我就觉得没有什么区别,况且 ORM 又不只是为了更好看。 ORM 本身就是为了解决使用的原生 SQL 的不便,和一些其他问题(比如安全处理)才创造出来的,除非你指出 ORM 无法解决这些问题,或在某些场景下没有必要,才有说服力。

    2. 至于你说的 PHP 内置函数的问题,我并不觉得框架(或库)对一些函数进行封装就一定是不合理的,比如 curl 系列函数,纯面向过程,那么如果你不对它封装一下写 OOP 程序应该很不好处理吧,具体可以参照一下 Facebook 的 SDK 。我觉得框架重新封装一些函数不仅仅是为了更好看,也是为了统一接口,这样才能保持一定的灵活性,当然有时很难平衡这个度。

    3. 我觉得框架存在的意义是更便利地解决解决一些通用的问题,比如你们之前提到的 Route , ORM , Templating ,如果问题这些在你的应用场景下不存在或不重要,那自然可以不用框架。你提出的模板解决方法,功能性是有缺失的,比如布局处理,全局的安全处理(比如 htmlentities )等。
    yangmls
        68
    yangmls  
       2015-09-18 12:58:09 +08:00
    @gaitana

    define ('REQUEST_METHOD', $_SERVER['REQUEST_METHOD']);

    这种过时的代码都能拿来推荐,牛逼!

    看来阁下完全不写测试。
    mcfog
        69
    mcfog  
       2015-09-18 13:05:06 +08:00
    哈哈哈

    肯定会 听起来就觉得 丑爆了 yo 丑爆了

    脑内 RAP 停不下来了怎么办
    DualWield
        70
    DualWield  
       2015-09-18 13:20:14 +08:00
    @gaitana ”至于支撑访问量,原生 php 肯定会比框架高几个数量级的,框架越大越臃肿越慢。“ ,我只能呵呵回敬你。我觉得你根本不懂软件工程这 4 个字,框架是为了让人更方便快速的书写代码,复用性,可维护性等多个方面考虑,支撑访问量这个角度,难道淘宝双 11 他们就不用框架了?全部都是手写吗?
    gaitana
        71
    gaitana  
       2015-09-18 13:23:11 +08:00
    @DualWield 大侠,干了这碗“呵呵”,为你和你的家人 ^_^
    chalio
        72
    chalio  
       2015-09-18 13:29:17 +08:00
    把我以前的回复再黏贴一次:
    女神:你能让这个论坛的人都吵起来,我今晚就跟你走。 程序猿: PHP 语言是最好的语言! 论坛炸锅了,各种吵架。 女神:服了你了,我们走吧,你想干啥都行。 程序猿:今天不行,我一定要说服他们, PHP 语言是最好的语言!
    他妈的这有啥好争的,爱用啥用啥,哪个顺手用啥, boss 叫用啥用啥,看需求呗,东西死的人是活的。
    msg7086
        73
    msg7086  
       2015-09-18 13:31:36 +08:00
    @gaitana
    PHP 表达能力不足是硬伤,毕竟从 C 系继承下来,没办法表达增强。当年看到 ORM 的 -> 和 :: 混用的时候我就想吐了。
    小时候做开发最后都得沦落到自己写框架写路由,模板 Smarty ,数据库姑且用 ADOdb 凑合,至少不至于用很恶心的 Prepare () 和 <%= %> (而且没记错的话后者最近刚被开发团队吃掉了)。
    其实你的论点「 PHP 不需要框架」,背后的意思应该是,到了需要用框架规模的开发了,就老老实实转用别的语言吧,的意思吧?
    curiousjude
        74
    curiousjude  
       2015-09-18 13:38:40 +08:00
    各位不要太激动啊,@gaitana 并没有说不支持使用框架,而是说 PHP 不要使用框架,鼓励大家使用原生的语法处理模板,使用内置函数直接处理问题等。当然这些我个人都不赞同。

    我对 @gaitana 这种一刀切的观点是不赞同的,没有具体的应用场景就直接说 PHP 不应该使用框架,这才是「会对新人造成误导」。
    gaitana
        75
    gaitana  
       2015-09-18 13:38:41 +08:00
    @msg7086 就是那个意思,到用框架的规模 PHP 的优势就不大了。那一堆堆的 [-> 和 :: ] 并不比用函数清晰,比如 Classname::method () 我宁愿定义成 classname_method ()这种命名的函数。
    iyaozhen
        76
    iyaozhen  
       2015-09-18 13:39:49 +08:00
    CodeIgniter 3 +1
    msg7086
        77
    msg7086  
       2015-09-18 14:03:56 +08:00
    @gaitana Fair enough 说的在理。
    lusizeng
        78
    lusizeng  
       2015-09-18 14:09:02 +08:00
    phalcon,你会喜欢上的
    maddot
        79
    maddot  
       2015-09-18 14:09:57 +08:00
    Every kids that have been writen a hello word with other programming language are qualified to criticise PHP
    maddot
        80
    maddot  
       2015-09-18 14:11:17 +08:00
    Every kid that has been written a hello word with other programming language is qualified to criticise PHP
    maddot
        81
    maddot  
       2015-09-18 14:13:37 +08:00
    Every kid that has written a hello world with other programming language is qualified to criticize PHP
    ibiger
        82
    ibiger  
    OP
       2015-09-18 14:19:16 +08:00
    @programcat 赞,帅哥博客确实很快, 页面里面嵌 PHP 可以分离一下。
    shellcodecow
        83
    shellcodecow  
       2015-09-18 14:53:54 +08:00
    phalcon 不错 简洁。 不过我也嘻哈 YII2
    motecshine
        84
    motecshine  
       2015-09-18 15:17:24 +08:00
    java 是世界上最好的语言
    kuochung
        85
    kuochung  
       2015-09-18 15:18:39 +08:00
    @motecshine java +1
    realpg
        86
    realpg  
       2015-09-18 15:31:29 +08:00
    轻: Codeigniter
    重: laravel yii2
    loolac
        87
    loolac  
       2015-09-18 16:08:03 +08:00
    不用框架, php 收集一下常用的代码就 ok
    vinsony
        88
    vinsony  
       2015-09-18 16:52:08 +08:00
    CodeIgniter 3
    543400
        89
    543400  
       2015-09-18 16:58:59 +08:00
    @vibrance 你的答案亮了
    wind3110991
        90
    wind3110991  
       2015-09-18 17:58:29 +08:00
    作为最好的语言,还是自己实现一个框架吧~



    哈哈,开玩笑, yii framework 2.0 / 3.0 你值得拥有, MVC 下的 M 模块特别好用,新手 XAMPP 一周可以上手开发一个中型网站,我这种没学过 php 的直接上 yii 都可以,更别说 phper 了
    49300289
        91
    49300289  
       2015-09-18 20:43:27 +08:00
    fatfree framework +1
    Roope
        92
    Roope  
       2015-09-18 21:14:15 +08:00
    Laravel
    ibcker
        93
    ibcker  
       2015-09-19 02:35:30 +08:00
    这种要引发世界大战的话题···我就看看就行···
    mingyun
        94
    mingyun  
       2015-09-20 23:19:21 +08:00
    laravel+1024
    rambone
        95
    rambone  
       2015-09-23 23:33:26 +08:00
    yii2
    lloydzhou
        96
    lloydzhou  
       2015-10-01 05:06:00 +08:00
    推荐一个精简的 Router 库做路由控制器 https://github.com/lloydzhou/router ,可以根据映射的 handler 自动从 request 获取变量,支持自定义 error handler 和 hook 。可以通过 hook 方便的定制参数过滤、登录检查等。

    (new Router())
    ->error(405, function($message){
    header('Location: /hello/world', true, 302);
    })
    ->get('/hello/:name', function($name){
    echo "Hello $name !!!";
    })
    ->execute();
    还不错
    sunsh217
        97
    sunsh217  
       2017-08-13 11:49:33 +08:00
    codeigniter 3 +1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2729 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:53 · PVG 21:53 · LAX 05:53 · JFK 08:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.