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

ThinkPHP 是我用过(维护过)的最恶心的 PHP 框架,没有之一

  •  3
     
  •   GM · 114 天前 · 8146 次点击
    这是一个创建于 114 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想简洁高效的话,CI 不香吗? 想工程化一点的话,Yii 不香吗? 想优美的话,Laravel 不香吗?

    真弄不懂为什么会有人用这 shit 一样的 ThinkPHP 。


    迫于要维护一个 ThinkPHP 开发的辣鸡系统有感。

    (我吐槽的是 ThinkPHP 框架部分代码,而不是这个辣鸡系统的代码)

    第 1 条附言  ·  114 天前
    我手头维护的这套是 ThinkPHP 6.0 的,够新了吧?

    各种地方一堆 public static function,想 override 扩展一下?抱歉,门都没有。
    89 条回复    2021-09-26 16:37:56 +08:00
    pcbl
        1
    pcbl   114 天前
    能用来赚钱的就是好的,完善的中文文档和大量的中文用户这一条就很有吸引力了

    TP 的问题不是在代码好不好,而是改动太频繁,一些基础的方法改来改去的
    yiqiao
        2
    yiqiao   114 天前
    @pcbl 中文文档一点都不完善,很多细节没有提到。你说的这个也有。
    很多人在 5.0 的时候还在用 3.2 的语法或者写法。导致代码异常难看。
    arronx
        3
    arronx   114 天前
    TP 几?好歹也是个国产开源 10 多年的框架啊
    coderfuns
        4
    coderfuns   114 天前
    TP 可是入行的启蒙导师,14 年时用 PHP 写接口用 TP 的很多
    x86
        5
    x86   114 天前
    tp3.x 是上手太太太快了,后面的版本没用过
    charlie21
        6
    charlie21   114 天前
    貌似外国也有专门维护老旧系统的人员 比如 ruby on rails 2 的维护人员,招个人专门来维护旧系统,开价反而比使用各类最新框架的人更高,因为
    人才市场上后者是供过于求,前者很少人做 供不应求 是冷门需求 故而能被开价很高
    justrand
        7
    justrand   114 天前
    一直 CI
    ryh
        8
    ryh   114 天前   ❤️ 1
    还有把 discuz 当 framework 用的呢,不是更恶心
    yefee
        9
    yefee   114 天前
    TP 更新到现在已经很好用了,不比 ci 简洁性差,不比 yii 工程化弱,不比 laravel……算了,laravel 就是个镶着金边的拖拉机。

    网上吐槽 TP 的,很多都是 TP 老版本了吧。
    littleylv
        10
    littleylv   114 天前
    建议楼主补充一下你吐槽的是具体某一个版本( 3.x,5.x,6.x ),还是全版本
    abccccabc
        11
    abccccabc   114 天前
    唉,有啥好说的呀,在上海公交车上说自己是美国人的大妈,当了一次美国人后,回国后觉得高人一等。
    Rache1
        12
    Rache1   114 天前
    @yefee 😂 给拖拉机道歉
    imnpc
        13
    imnpc   114 天前
    TP 3.X 老框架了 问题比较多
    TP 5.X 还不错 改进很多
    TP 6.X 很多地方和 laravel 区别不大了 会 laravel 的很快就能上手
    towry
        14
    towry   114 天前
    主要是有中文文档吧。

    估计很多 php 培训机构都是用这个的。
    abccccabc
        15
    abccccabc   114 天前
    每一个版本的发展都是当时历史发展的见识,没必要说这个不好,那个不好。现在说以前不好,有意思吗?
    hzz2
        16
    hzz2   114 天前
    @topthink 这种通常怎么看
    liuxu
        17
    liuxu   114 天前
    tp:我让你用我了?
    tabris17
        18
    tabris17   114 天前
    @yefee 现在的 TP 就是抄袭 Laravel 。作为一款曾经包含远程执行漏洞的框架还有什么好说的。

    TP 之所以会在国内流行,还得从 10 年前说起,当时还在流行 CakePHP,Zend Framework,对国内的 PHP 开发者来说太复杂了,而且中文信息不多,TP 这种野路子框架也就是因为这种情况才会在国内流行起来
    MengiNo
        19
    MengiNo   114 天前
    想到一个事情。前几个月我去某省立医院找了个主任看牙,对方先说你这个牙之前的填充物如何如何,现在早就没有了,只能整个拆掉重新弄过。现在都用 A 材料,B 方案,要么就是种植了。我当时也回了句,不管怎么说,我这颗牙从 2000 年到现在是实实在在是经过了 20 年的检验,今年才崩掉的,您说的这些什么新的材料能保证再用 20 年么。
    abccccabc
        20
    abccccabc   114 天前   ❤️ 1
    楼主,如果你硬要说 laravel 香,真想拍一巴掌,话说接手第三方一个项目,死活在 win 系统上运行不起来,然后弄了一个 alpine 的 docker 还跑不起来。X,什么鬼。搞得我被领导骂。最后查出来是他们代码使用了一个组件,这个组件太特殊了。在全量的 linux 里都正常,到了精简版的 alpine 里死翘翘。

    一个破 tp 到处跑的溜溜溜,你说那个香。
    manhere
        21
    manhere   114 天前
    好歹也贴几行代码
    zhangchongjie
        22
    zhangchongjie   114 天前
    最好的...算了
    tabris17
        23
    tabris17   114 天前
    @MengiNo 20 年前补牙材料应该是汞齐合金,因为含有水银成分,所以会危害健康,虽然你补的牙坚挺了 20 年,但是你也中了 20 年的毒
    ZhiyuanLin
        24
    ZhiyuanLin   114 天前   ❤️ 1
    说工程化的话,Symfony 面前 Yii 根本排不上号吧。
    herozzm
        25
    herozzm   114 天前 via Android
    phalcon 哪里去了?
    sobigfish
        26
    sobigfish   114 天前   ❤️ 1
    @abccccabc 为什么想不开用 Windows 跑 php 。😂
    测试? 直接虚拟机不香吗
    westoy
        27
    westoy   114 天前   ❤️ 1
    @tabris17

    thinkphp 作者当年是搞 j2ee 改行的

    一开始一股 java 味儿

    后来就怼着各家框架抄特性

    当时三天两头被 fleaphp/qeephp 作者挂着婊...........
    MengiNo
        28
    MengiNo   114 天前
    @tabris17 不是的,我当时门牙摔了,用的就是树脂光固化的,当年医生有说后续要换烤瓷,但我用到现在都感觉没什么问题就没去换。因为直到今年牙神经都还活的,我觉得没什么必要为了换烤瓷特意去杀神经。这次没办法,医生就是说没法补了只能给他做根管治疗了,现在等待做烤瓷中。至于银汞,感觉都是上个世纪的事情了 23333 。

    不过这不是重点,我想表达的是说一个老技术久经考验没有问题的,虽然新技术从理论上更好,更受推崇,但是能不能比老技术用的更久、更耐用、更香,这个其实还两说。哪怕现在烤瓷也好,种植也好最终也用了 20 年,那说白了也没有超过 20 年前的技术。所以也只能拭目以待看看这次换完能用多久。
    sagaxu
        29
    sagaxu   114 天前 via Android
    国产框架双雄,jfinal 和 tp
    GarethChu
        30
    GarethChu   114 天前
    TP 的老大在 v2
    myd
        31
    myd   114 天前
    TP 6 确实 bug 很多,文档也很多错漏。TP5 比较好用
    996icu007007
        32
    996icu007007   114 天前
    是人的问题吧 嘿嘿嘿嘿
    996icu007007
        33
    996icu007007   114 天前
    自己写一个就好了啊
    wowbaby
        34
    wowbaby   114 天前
    手头还有几个 tp3.x 老项目,还要维护,每次要改点东西,真的害怕,都是屎山一样的代码,不想动。
    其它 php 项目都是 yii2 开发的,随便怎么改,都不怕。
    littleangel
        35
    littleangel   114 天前
    看了标题 还以为 是我自己来 v2 发的帖子呢
    keepeye
        36
    keepeye   114 天前
    惭愧,当年用 tp3 写了一个项目,上线后跑了,七八年过去了该项目还在迭代,给后面接手过的兄弟道个歉
    JaguarJack
        37
    JaguarJack   114 天前
    求求你,别骂了,给点面子
    madpecker009
        38
    madpecker009   114 天前
    tp 才是 yyds,,,
    yefee
        39
    yefee   114 天前
    @tabris17 甭管是否抄袭,曾经有漏洞就意味着他一辈子都不行?其他框架历史上就没有出现过漏洞?其次,你自己都承认,国外框架对国内开发者来说太复杂了,TP 容易上手,这不就是 TP 的优势吗。
    yefee
        40
    yefee   114 天前
    同样的帖子真的没意义,Laravel 是我用过最恶心的 PHP 框架,没有之一。我也能给你讲出一堆理由。
    abccccabc
        41
    abccccabc   114 天前
    @sobigfish 8G 内存,实在跑不动 docker 了。更不用说虚拟机了,更吃内存。还有就是验证代码的兼容性。
    yefee
        42
    yefee   114 天前
    TP6 不如 TP5 好用倒是真的,TP6 改动太过于激进了
    Mitt
        43
    Mitt   114 天前
    真巧,我最近刚接手一个 thinkPHP5 的项目,我本身是用 Yii2 的,看了几天这个项目代码确实恶心到人了,很多东西现代框架都有的它没有,不仅框架使用上感觉很烂,用这个框架的人写的代码更烂,整个项目就是座屎山
    Mitt
        44
    Mitt   114 天前
    @Mitt #42 而且最烦的是这个 thinkPHP 版本就落后几个小版本号,网上已经能找到成吨的远程命令漏洞,而且还都能复现
    Symo
        45
    Symo   114 天前
    @MengiNo 美国的铅水管从 1920 年使用了接近一百年, 也可以说是久经考验了. 要用发展的眼光看问题.
    yxzblue
        46
    yxzblue   114 天前
    我顶楼主
    fork3rt
        47
    fork3rt   114 天前
    漏洞挺多的,很多都可以直接 get webshell
    young
        48
    young   114 天前
    @Mitt #43 深有体会,各种奇技淫巧
    ztxcccc
        49
    ztxcccc   114 天前
    不会真的有人不用 symfony 吧(
    watcher
        50
    watcher   114 天前
    楼主没有资格说要从实力上与 thinkphp 对话
    wooop
        51
    wooop   114 天前
    风铃 CMS 系统( PHP )的支付接口和回调的二次开发预算 500 左右 有做的么
    way2create
        52
    way2create   113 天前
    我也不喜欢用 但有时不是我说了算 凑合着用了
    abersheeran
        53
    abersheeran   113 天前
    幸好我写的框架基本各个部件都可以 override……
    abccccabc
        54
    abccccabc   113 天前
    我就想着,开骂国产框架的人,会不会骂国产车呢?^_^……^_^
    mengdodo
        55
    mengdodo   113 天前
    话说我司曾经拿来一个 tp3 的项目让我改。我当时想这么老的东西,万一以后 web shell 了,我到底背不背这口锅哦~
    falcon05
        56
    falcon05   113 天前 via iPhone
    很多培训机构就喜欢这玩意
    ragnaroks
        57
    ragnaroks   113 天前
    能用 CI 完成的都用 CI,不能用 CI 完成的换语言
    chenqh
        58
    chenqh   113 天前
    想问下为什么 override 不了?
    oneforallsoft
        59
    oneforallsoft   113 天前
    @abccccabc
    什么组件来着? 不能因为组件而怎么怎么
    laravel 好 文档好 别人分享出来的东西好
    码农不就是拷贝粘贴么
    最怕的就是要看源码的 文档很少 别人分享的很少的
    cokyhe
        60
    cokyhe   113 天前 via iPad
    Laravel 用了就不会写 php 了
    haha512
        61
    haha512   113 天前
    用个框架还用出阶级仇恨来了
    we8105
        62
    we8105   113 天前
    真是 有框架用就不错了

    还有就是怎么还在用 php 呀
    zxcslove
        63
    zxcslove   113 天前
    很多产品的问题都出在文档上吧,tp6 这方面很突出。文档描述和实际情况不一样,各种遮遮掩掩,没有详细参考。
    abccccabc
        64
    abccccabc   113 天前
    @oneforallsoft 最终这个问题是对方解决的。也没和我多说。
    JaguarJack
        65
    JaguarJack   113 天前
    @zxcslove 主要经常改底层接口
    akira
        66
    akira   113 天前
    适合新人上手
    MengiNo
        67
    MengiNo   113 天前   ❤️ 1
    @abccccabc 感觉是你配置哪里不对,或者电脑有问题。我在腾讯云、阿里云上随便开一个 1 核 2G 的机器,在上面装个 docker,启动个 Laravel 项目的容器,用自己笔记本的 vscode-remote 连到服务器的 容器 内开发。算上 vscode PHP 相关的 5 、6 个插件,2G 内存同时开 两个 这样的容器完全不费劲,何况是本地的 docker 。而且用 alpine 为底最大的作用还是减少硬盘的占用,内存方面 PHP 作为非常驻内存的语言来说,本地测试没什么量的情况下基本不占用多少。要精细控制的话 docker 的 desktop 版本也都有带 docker swarm,加个配置轻松就可以限制单个容器的内存占用。

    在加上 alpine 作为精简包一般都是作为线上环境自定义镜像的底。开发、测试环境用这种底,连个基础的 ps 、tail 工具都没有,装一些 PHP 扩展 大概率也会缺包。虽然可以后续去装,但开发、测试环境本身不就是为了快速的使用、方便调试。这样还需要后续调试半天,使用场景也不太合适。至于验证兼容性从结果上看就更不存在了,毕竟最终上线部署的服务器绝大部分都是 Linux,开发和测试环境要尽可能仿真。如果他在 Windows 上行,上线到 Linux 之后出现一些奇奇怪怪的问题,那还说兼容性不行(不过这也算常态,不然 docker 也不会这么火)。如今反过来,还是本地环境配置不到位。

    最终还是知其然要知其所以然,alpine 这类精简发行版到底精简了什么,或者反过来说你这个项目到底依赖什么,缺了会导致什么问题。这点没有概念的话,哪怕用 Golang 这种最终编译成二进制文件的、只与平台相关几乎和外部环境无关的情况下,无脑用 alpine 照样大概率跑不起来。用这种论据说 Laravel 不如 TP,个人还是不太认可的,只能说 TP 相对于 Laravel 依赖更少,但依赖更少在现代包管理软件的加持下,只能算中立属性,并不算什么核心的优点。
    shellic
        68
    shellic   113 天前
    其实垃圾的主要还是人,项目开始前就定好了规范,总有人写着写着就放飞自我了
    killerv
        69
    killerv   113 天前
    @abccccabc 我觉得应该不是 Laravel 的锅,我们在 Alpine 上跑过 Laravel,可能是项目依赖的组件需要某些 lib
    dongtingyue
        70
    dongtingyue   113 天前
    只是你不熟而已,个人认为最香的是自己用 composer 搭的,简洁明了。
    不能扩展这个槽点应该是不存在的
    abccccabc
        71
    abccccabc   113 天前
    @MengiNo 第三方也给我解释的含含糊糊。反正问题已经解决,所有平台都能跑起来,也就没有再继续追问对方。


    @killerv 没错,是依赖某些组件,这个组件在全量的 linux 系统里运行没有问题,对方给我们演示时,mac,centos 都正常,但到了 alpine 环境就残了,不能走路了。
    ykrank
        72
    ykrank   113 天前
    @MengiNo 10-30 这 20 年和 30-50 这 20 年可不是一个人体状态
    killerv
        73
    killerv   113 天前
    @abccccabc 这个在我看来不是 Laravel 的问题,就是系统选择和配置的问题,因为 alpine 就是残的,最近我们的某个 node 项目,在 node 容器镜像(基于 Debian )下都得额外安装一些 lib,alpine 缺的就更多了。
    nate375
        74
    nate375   112 天前
    这个作为入门学习很有用
    GM
        75
    GM   112 天前
    @nate375

    入门还是建议拿个代码风格良好、结构简单的框架来入门,比如 CI 。

    不然一开始就养成不好习惯了,后续纠正那可就难了,比如体育教练喜欢教什么都不会的新人,而不是野路子了很久、一堆不良习惯纠正不过来的人。
    ZiShuo
        76
    ZiShuo   111 天前
    一个框架如果不认可,你可以选择不用或者是自己写个更优秀的开源出来,看楼主能不能把开源也和 TP 一样做 10 年,就这份毅力都是很了不起了,再者一个月薪几 K 几十 K 的人又有什么资格去批判一个已经有一定市场占有率的系统,或许你的工资总和还不如你口中这个垃圾系统创造的价值,说难听点你还不够格。
    GM
        77
    GM   111 天前
    @ZiShuo 对,如果你对已经花几千块钱购买的冰箱制冷效果不认可,你可以选择扔掉或者是自己造个更好的出来分享给大家使用,看看你能不能也像冰箱厂商一样做十年,就这份毅力都是很了不起了,再者一个月薪几 K 几十 K 的人又有什么资格去批判一个已经有一定市场占有率的冰箱,或许你的工资总和还不如你口中这个垃圾系统创造的价值,说难听点你还不够格。
    thinkingbullet
        78
    thinkingbullet   110 天前
    框架只是工具,如果你看他不顺眼你自己造一个工具,如果没那个实力你可以换一个其他工具,如果其他工具也不能满足你,那你就给框架提代码提 pr,如果你啥都不做只想别人为你改变,那你终将一事无成.
    wangyzj
        79
    wangyzj   108 天前
    依旧坚持在 tp3.2 上
    lhg1397
        80
    lhg1397   106 天前
    为什么要用 php 不然换语言
    GM
        81
    GM   106 天前
    @lhg1397

    因为:

    迫于要维护一个 ThinkPHP 开发的辣鸡系统


    历史遗留屎山,不是想换就能换的,要是能换我还吐槽个啥啊。
    topthink
        82
    topthink   104 天前   ❤️ 1
    首先我想说的是 框架没有好坏之分 正如语言没有好坏之分 不同的框架有不同的定位和用户群,这个和汽车一样。TP 一直在保持更新迭代,因为我们心中也觉得不够完美,不能说你觉得这个地方不满足你的需求就是垃圾,喷的时候还是建议多点实际的例子(你文中举得例子真的很奇怪 ~或者是我孤陋寡闻了)。为什么你们总是会要求要维护一个 TP 开发的系统 ,这说明什么?不就是用的人多么,大家又不是傻子,官方也没有忽悠他用。一个项目团队尤其是创业团队 在框架的选型上一定会经过考虑的,没有最完美的框架,只有最适合的框架。否则国内就不会没有一个比 TP 能打的框架出来~真正屎一样的框架和代码你还没见过 你才用了 TP 多久
    wueryi
        83
    wueryi   103 天前
    楼主维护过 phpcms 和 ecshop 吗?感觉这两个维护起来更不容易接受。。
    Evilk
        84
    Evilk   102 天前
    问一下
    `public static function`扩展性很差吗?
    GM
        85
    GM   101 天前
    @Evilk

    看情况,在不合适的场合用了就是导致别人无法扩展。

    比如,
    public static function doSth() {} 将会导致别人直接 klazz::doSth() 这样调用,而不是 $obj->doSth() 这调用。


    结果就是你想重载一下这个方法却没办法,只能硬改代码。
    imxieke
        86
    imxieke   101 天前 via iPhone
    @topthink 文档细节太少了 还需要自己去翻源码去找 比如 command
    zjsxwc
        87
    zjsxwc   95 天前 via Android
    有没有对于已有无脑 static 全局方法,重构的技巧推荐?
    lyhiving
        88
    lyhiving   70 天前
    早日脱坑,Laravel 才是未来。
    zhennann
        89
    zhennann   31 天前
    用过 node 的 CabloyJS 也许会改变对 php 的认知
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3897 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:06 · PVG 15:06 · LAX 00:06 · JFK 03:06
    ♥ Do have faith in what you're doing.