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

做个框架选择小调研

  •  
  •   brader · 358 天前 · 4082 次点击
    这是一个创建于 358 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前提:
    开发 API ,新项目,没有历史包袱,由你自己主导的项目,可自由选择 PHP 版本、框架。

    现在的你会选择什么框架呢?

    说下我的选择:
    我会选 thinkphp 、webman 吧。我比较常用 thinkphp ,webman 是我挺想在生产中尝试的框架。

    不选其他的一些个人考虑:
    hyperf 、swoft 在 win 下开发个人感觉体验不佳,实际运行中还存在一些奇怪的问题比较难以解决。
    laravel 做后台基本是我首选,但用他作为 API 太重了,影响性能,以前吃过这方面的亏,包括 lumen 也折腾了不少。
    45 条回复    2024-12-02 15:24:27 +08:00
    GooMS
        1
    GooMS  
       358 天前 via Android
    Laravel 做 api 不行然后换 thinkphp 就行了。这个决策逻辑像过家家
    brader
        2
    brader  
    OP
       358 天前
    @GooMS 这只是出于我个人经验考虑出发做的选择和观点。每个人看法可能不同,现在就是做个调研,大家可自由发布选择。
    dzdh
        3
    dzdh  
       358 天前
    影响性能也该有个可量化指标和负载场景。我不认为国内有哪个项目因为框架性能导致业务运行不下去的,相反真因为 laravel 导致的明显的性能问题,我认为这项目的盈利已经足以弥补性能问题了。
    javalaw2010
        4
    javalaw2010  
       358 天前   ❤️ 2
    普通业务直接 laravel + octane 。吃性能的上 hyperf 。windows 上开发 PHP 基本都是基于 wsl2/docker 的了,问题不大。

    永远不会选择 thinkphp ,尝试使用过 tp 做过业余项目,这个框架乍一看还堪用,但是其实非常脆弱,要么是特性/用法文档上完全没提(这都算好的,翻翻源码也能知道),要么特性在冷门一点的 case 上直接不支持,官方包也是问题多多,出现过安装官方包根本没法运行的情况,还得自己去改源码做适配。

    至于 webman 个人也体验过,与其说是一个框架我觉得更像一个脚手架,相对简陋一点,自己需要完成的工作比较多,有一部分的设计有点草台班子的感觉,没有经过深思熟虑。但也因为简单所以个人/小团队相对容易 hold 住。生态部分尽量自己搭建,webman 社区的生态大多是个人作品,质量良莠不齐,使用需谨慎 review 过代码才能用。这个框架要我选我不选,你选我尊重。
    GooMS
        5
    GooMS  
       358 天前 via Android
    @brader 我和楼上的看法一样,选择主看生态,至于性能问题一般不是在 io 就是业务上,优化三板斧都能解决。cpu 特别高的地方, 比如物联网广告联盟之类的基本都是写 es, 消息队列,时序之类 左手 nodejs 右手 go
    BeforeTooLate
        6
    BeforeTooLate  
       358 天前
    >hyperf 、swoft 在 win 下开发个人感觉体验不佳
    这个不太理解,win 下开发可以选择 vagrant 、wsl 等开发效率并不差
    elevioux
        7
    elevioux  
       358 天前 via Android
    没有特定需求的,哪个熟悉选哪个,哪个生态好选哪个
    herozzm
        8
    herozzm  
       358 天前 via iPhone
    phalcon
    yiqiao
        9
    yiqiao  
       358 天前
    Laravel 影响性能,换 Hyperf 又嫌开发环境不如意。就换个 虚拟机或 docker 的事。
    难道生产环境是 Windows 吗?
    不过 Hyperf 不能很好的像 Laravel 调试 dd 让我很不喜欢。
    sadfQED2
        10
    sadfQED2  
       358 天前 via Android
    yaf
    xiaotuzi
        11
    xiaotuzi  
       358 天前
    我们公司一直用 easyswoole ,类似 hyperf 的框架吧,也是 php-fpm 启动。
    对于框架,lavarel 用的少,社区很大,但是感觉比较多东西在里面,不喜欢他的优雅,什么都是 composer 一把梭,thinkphp 和 easyswoole 用的多,简单就是 CURD 方便,hyperf 和 webman 没有用过,不过了解了一下,差不多。
    最近还看了下 phalcon ,说是调用的 C 语言的模块,单独写了一个模块,加入到 php.ini 里面,windows 还没起来过,linux 比较方便。

    呐,我个人可能会选择 Go 语言来写 api ,说实话,PHP 框架就那一套,用数据库类,业务代码写来写去都是 CURD 这样。各个都说高性能,算了直接用高性能的 Go 就完事了。

    一方面 go 天生有高并发的优势,另一方面,不要老是学 PHP ,限制了自身发展。

    如果非要选择 php 框架,我会选择 thinkphp 吧,无它唯手熟尔。

    BTW ,你自己写个框架玩玩也挺不错的。框架就是搭建好的脚手架。
    codespots
        12
    codespots  
       358 天前
    webman
    8355
        13
    8355  
       358 天前
    php8.1+webman 简单好用,如果你有开发组件的能力可以用的很爽,官方的一些功能还是比较少,我们自己做了不少东西。
    miaotaizi
        14
    miaotaizi  
       358 天前
    肯定 laravel 啊

    开发快才是王道, 只要不是你人为造成的性能问题都不是问题
    dongisking
        15
    dongisking  
       358 天前
    hyperf ,有 laravel 的优雅,也有实现 AOP 的特性,并且基于 swoole 还有协程。
    Immortal
        16
    Immortal  
       358 天前
    现在没人用 yaf 了吗
    codespots
        17
    codespots  
       358 天前
    @Immortal 不好用,性能相比 Swoole 、Webman 并没有优势
    ersic
        18
    ersic  
       358 天前
    在用 webman ,挺好用的。
    brader
        19
    brader  
    OP
       358 天前
    @BeforeTooLate 这正是我反感的地方,你说的这些我都折腾过一遍,用这个或多或少的会遇到其他坑需要填,或者会牺牲一些开发上的便捷性
    brader
        20
    brader  
    OP
       358 天前
    @yiqiao 经历过的生产环境,95%以上是 linux 。
    开发环境的话,什么虚拟机、docker 、wsl 等等都折腾过,最后依然是回到了 win 环境,直接装个 phpstudy 完事,开发起来最舒服
    brader
        21
    brader  
    OP
       358 天前
    @xiaotuzi 不讨论换语言的问题,这个话题很容易引起语言战争,不在于能不能换的情况,我也会 GO ,但不在这个调研讨论范围。
    brader
        22
    brader  
    OP
       358 天前
    @sadfQED2 听过这个,可能前辈们用过吧,其实后面入行的,越来越少人用了
    dongisking
        23
    dongisking  
       358 天前
    在 wsl 上基本没遇到过啥问题,一个项目一个 dockerfile 构建开发环境
    xiaoz
        24
    xiaoz  
       358 天前 via Android
    好几个自己的小项目都用的 webman ,我是熟悉哪个就用哪个。又不是啥大项目,能跑能挣钱就对了。
    BeforeTooLate
        25
    BeforeTooLate  
       358 天前
    @brader 不会吧,我现在 vagrant 配好几年没动过,开发环境搭建能有什么坑,不就启动下 linux 环境吗。代码又不在虚拟机里写,还是 win 下面 ide 操作,和你 phpstudy 有啥区别?
    Logtous
        26
    Logtous  
       358 天前
    我会选基于 symfony 的 Api Platform ,谁用谁知道,欧洲挺流行的。最近在哪里瞟见一份各国编程语言使用占比统计,北欧国家还挺多以 PHP 为主的,特别是 symfony 的母国(法国)。用了多年 laravel ,去年空闲时间尝试 symfony ,相见很晚,laravel 感觉现在有点异教徒了,从 sanctum 开始内置后就不想再用了。
    miaotaizi
        27
    miaotaizi  
       358 天前
    @brader 如果是环境问题困扰了你, 推荐一个项目 laradock 可以看下, 会点 docker 用起来会很舒服
    Duanpei
        28
    Duanpei  
       358 天前
    人生苦短, 我用 Laravel
    如果说真的要强调性能,yaf 或者 phalcon
    cwcc
        29
    cwcc  
       358 天前
    我自己开发了可以自由切换 workerman 和 swoole 驱动层的框架,要性能在 linux 生产用 swoole ,windows 开发用 workerman 。但写一个优秀好用的框架真的是十分困难,很多组件的生态基本要么只能用方便拆装的(如 symfony 的),要么就自己造轮子,要踩的坑一个不少。
    z1829909
        30
    z1829909  
       357 天前   ❤️ 1
    webman 开发这个项目的人技术水平高, 低调, 本身也在做企业服务, 有经验积累. 而且是纯 php 实现, 出现问题好排查,可以自己改.
    你如果开发后台他们也有一个 admin 后台, 如果做 toc 的, 性能也可以
    不像隔壁某框架, 充斥了一些饭圈味道.
    coderzhangsan
        31
    coderzhangsan  
       357 天前
    1 如果你不喜欢折腾,那也不需要调研,你的团队或者你本人熟悉什么技术栈就用什么,毕竟这样开发和维护成本低。
    2 如果你喜欢折腾,那就面向简历开发,换一种市面流行的框架开发。

    从你的表述来看,很明显是第一种,作为 V 友,从职业规划的角度来看,我的建议是不要老是执着于框架,框架只是个开发轮子而已,你应该考虑技术以的深度、架构的广度以及业务的沉淀,后续做专职项目管理或技术专家都是有帮助的。
    wonderfulcxm
        32
    wonderfulcxm  
       357 天前 via iPhone
    你的什么项目啊,这么吃性能吗?
    SadBox
        33
    SadBox  
       357 天前
    建议 Laravel 其他真不建议
    eben
        34
    eben  
       357 天前
    很少见啊,2024 年还能看到关于 php 的信息,我目前小项目用 orm 类+原生+第三方编辑器,大的推 Laravel ,客户有要求可以 thinkphp
    lyxxxh2
        35
    lyxxxh2  
       357 天前
    推荐 lumen
    loginv2
        36
    loginv2  
       357 天前
    yii2 ,用惯了
    to2false
        37
    to2false  
       357 天前
    如果是 tp3 ,无法可说
    如果是>tp3 ,那跟 laravel 有啥差别,还不如上 laravel 呢

    所谓性能差距,请贴合实际考虑
    Evilk
        38
    Evilk  
       356 天前
    php7.4 + webman
    Tinywan
        39
    Tinywan  
       355 天前
    webman
    luoyou1014
        40
    luoyou1014  
       352 天前
    php8.3+hyperf
    QlanQ
        41
    QlanQ  
       351 天前
    > hyperf 、swoft 在 win 下开发个人感觉体验不佳,实际运行中还存在一些奇怪的问题比较难以解决。
    这一点我觉得你应该重视起来,如果你是在 Windows 下开发,你也应该用 wsl 、docker 去开发,开发环境应该尽可能的和生产环境一致,类似数据库的版本,phpstudy 虽然方便,但是真的不适合用来做开发环境,Windows 下还是有很多和 Linux 不同的,包括字符集、换行符、路径之类的、包括大小写
    wsl 和 docker 在 windows 下已经很方便和省资源
    如果考虑生态优先就是 laravel ,tp 还是不如 laravel 的生态好,我是说各种服务的三方包
    如果在考虑性能,可以上 hyperf 了,laravel 到 hyperf 切换上手成本最低
    ywisax
        42
    ywisax  
       350 天前
    如果是单纯考虑业务开发的话,我会选择 Symfony ,这个可能是最优,但是也最重的。
    要兼顾性能的话,就要考虑 Webman 方案,或者 Symfony+Swoole runtime/Symfony+Workerman runtime 。
    ben1024
        43
    ben1024  
       348 天前
    渐进一些
    业务 laravel
    有性能需求 laravel + octane (swoole)
    在有性能需求 webman
    coolboys
        44
    coolboys  
       228 天前
    作为一个天天都在写 thinkphp 的人,直接建议 Laravel 或者 Hyperf 。
    原因如下
    1. 规范,完全符合规范
    2. 生态不错
    3. 积极维护
    4. IDE 友好,对于开发者体验很棒

    如果这两个你都不熟,那就考虑 webman ,起码对 Laravel 的包的支持还蛮不错的。

    不评价哪个好哪个不好,只是个人建议。。
    qf19910623
        45
    qf19910623  
       25 天前
    hyperf 由于需要编译注解代码的原因,导致真正执行的代码跟你写的代码不太一样,这就直接导致代码的真正报错位置不能直观的从堆栈中体现出来,调试起来特别麻烦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5391 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 08:44 · PVG 16:44 · LAX 00:44 · JFK 03:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.