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

[不懂就问] PHP 的开发效率具体快在哪里?

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

    有没有熟悉多门编程语言(包含 PHP )的大佬,想问下 PHP 的开发效率到底快在哪里?

    第 1 条附言  ·  137 天前
    总结一下各位大佬提到的优点:

    1. 语法糖:array/string ,json 处理很方便。
    2. 弱类型:不需要指定变量类型,少写代码。
    3. 解释性语言:不需要编译,开发、调试速度快,部署简单。
    4. 生态:开箱即用的框架,优秀的 ORM 。
    116 条回复    2024-07-25 09:50:53 +08:00
    1  2  
    sun2920989
        1
    sun2920989  
       137 天前
    起码 array 是真的方便
    agdhole
        2
    agdhole  
       137 天前   ❤️ 1
    十年前对 startup 方便的包比较多,拉几个包就是一个项目,十年后的现在没有任何优势,反倒因为 fpm 还是巨大劣势了。
    eoo
        3
    eoo  
       137 天前
    起码 array 是真的方便+1
    ixixi
        4
    ixixi  
       137 天前   ❤️ 6
    f5 f5 f5 f5 f5 f5
    brader
        5
    brader  
       137 天前
    举个例子,做一个文章模块的后台管理功能,增删改查,你用其他语言要多久做好
    aababc
        6
    aababc  
       137 天前
    就这么说吧,我司前一段时间做了一个新的 app ,客户端 3 ( flutter) 人,服务端 1 人。25 天弄完,然后 app 就死了。
    sampeng
        7
    sampeng  
       137 天前
    array 是 yyds
    NjcyNzMzNDQ3
        8
    NjcyNzMzNDQ3  
       137 天前
    内置函数一堆啊,str_xx array_xx ,又不放弃历史包袱没兼容问题

    改了就好使,又不用编译
    veni2023
        9
    veni2023  
       137 天前
    自己去用一下咯,半天估计就能上手一个主流 php 框架
    QlanQ
        10
    QlanQ  
       137 天前
    因为没有太严格的类型,array yyds ,加上 orm ,你代码里面可能看不到任何 sql 语法
    QlanQ
        11
    QlanQ  
       137 天前
    内置函数,强不强先不说,全那是真的太全了
    x86
        12
    x86  
       137 天前
    用过对比过才知道是真的快
    cleanery
        13
    cleanery  
       137 天前   ❤️ 1
    CRUD 的神
    qW7bo2FbzbC0
        14
    qW7bo2FbzbC0  
       137 天前
    和 django ror 比起来呢?
    Iakihsoug
        15
    Iakihsoug  
       137 天前
    orlog
        16
    orlog  
       137 天前
    不需要编译,不需要指定变量类型( nodejs 也具备这些优势,但是 php 的成熟开源项目更多些吧)
    其他流行语言都不具备这两点
    belin520
        17
    belin520  
       137 天前
    修复 - 保存 - F5
    dilu
        18
    dilu  
       137 天前   ❤️ 8
    1. 万能 array/string ,加上一系列 array 的内置函数,什么一维二维转换,排序,提取全部 key ,提取全部 value ,数组合并等一系列业务中对于数组的常用操作都可以用一个内置函数搞定。字符串等操作更方便。
    2. 比较优秀的 ORM ,collection 等等。基本不见 sql 代码,只要不是超级复杂必须用原生 sql 的逻辑,只要定义个 model 全都解决了,甚至不定义 model 都行,内置的各种 ORM 方法可以很快的解决一些非常简单的 curd 逻辑。
    3. json 处理友好,数组/对象很方便的转成 json ,也能很方便的解析 json 。也跟 php 的弱类型有关,如果是 Go 这种强类型语言还得定义个结构体。当然强类型语言也有好处,但是开发效率确实会慢一点。
    4. 无内存泄漏/全部 builtin 类型都是线程安全的,完全不需要考虑什么加锁之类的。没有并发心智负担。
    5. 比较现代化的包管理/还算丰富的社区包/扩展,基本 web 常见问题都有对应的包。
    6. 比较好的向前兼容,例如你用 php5.4 开发的代码,直接换成 php7 有 99.99%的可能性没有任何问题。
    7. lnmp 架构比较简单,运维心智负担低,四五台中配机器抗起几万的 qps 没啥太大压力,性能也还算凑合。

    当然 php 也有很多缺点,这里就不讨论了。
    debuggerx
        19
    debuggerx  
       137 天前
    主要是十几年前跟 C/C++、java 比,写起来自由方便,无需编译部署简单。
    放到现在来说除去市场惯性因素,JS/TS 、Python 这些其实效率更高,[]和{}区分定义对前端来说也更少出现因为某些 phper 辖 JB 乱用 array 导致接口数据定义乱飞的情况
    dilu
        20
    dilu  
       137 天前
    @belin520 #17 说的也是一个优点,改完代码保存至今就能看结果,强类型语言还得编译一下,即使是 go 这种编译速度很快的语言,当项目变复杂/变大之后,编译也很慢。并且有时候如果有人引用了一个奇怪的包,例如只能在 linux 下用,mac 和 win 不能用的包,你就直接编译不了了,但是 php 不会有这个问题。
    javalaw2010
        21
    javalaw2010  
       137 天前
    举两个 demo ,管中窥豹:
    1. 返回一个 json 响应,一行代码:
    ```php
    echo json_encode(['code' => 0, 'msg' => 'success', 'data' => ['user_id' => 1, 'nickname' => 'foo']]);
    ```
    2. 如果你有一个 map ,你想翻转它的 key-value:
    ```php
    $map = ['red' => 'tesla', 'blue' => 'volvo'];
    $map2 = array_flip($map);
    ```

    其实就是得益于几乎万能的 array 和强大的内置函数。另外就是 fpm 模式简单粗暴地解决了内存泄露,让菜鸟写出来的代码也能稳定运行。

    成也 array 败也 array 吧,数组的滥用导致了几乎在 php 的所有项目中 array 都乱飞,给团队协作带来了很大的不便。
    belin520
        22
    belin520  
       137 天前
    @orlog 原先 JavaScript 也是所写所得,不需要编译的。后来加上各种构建工具、TS 之后,也是需要编译(开发阶段有 hotreload )
    lolizeppelin
        23
    lolizeppelin  
       137 天前
    这类问题都和语言关系不大的....重点是框架
    php 几个开箱即用的框架能快速出成品,会的人多上手也简单
    ounxnpz
        24
    ounxnpz  
       137 天前
    可以 ssh 到 server 用 vi 直接改生产环境代码,改完立即生效
    wonderfulcxm
        25
    wonderfulcxm  
       137 天前 via iPhone
    额,上面说的这些函数、数组用 ai 也就几分钟的事。
    x86
        26
    x86  
       137 天前
    以前 tp3.x 的时候,你甚至可以一个 contorller 里写完成全部业务 🐶(畜生写法)
    smirkcat
        27
    smirkcat  
       137 天前
    直接改代码,无需任何编译,各种弱类型表述,框架多
    orlog
        28
    orlog  
       137 天前
    @belin520 我说的就是最单纯的用 js 作后端语言,毕竟 php8 之后也变成强类型语言了,ts 之所以效率慢也是因为强类型
    lyxxxh2
        29
    lyxxxh2  
       137 天前
    ## 无需编译
    可能你说,编译不久几毫秒吗,又不费时间。
    后期编译型语言,改个字符串,你可能等 300-1500ms 才能刷新一次。

    如果用 swoole:
    hyperf vs laravel,你会发现 hyperf 开发速度慢一大截。

    ## 完整的包
    ```
    public function order(Request $request)
    {
    # 先删除 达成伪更新
    AiOrder::where('video_id',$request->video_id)->delete();
    $models = [];
    foreach ($request->statis as $statis){
    $models[] = (new AiOrder())->fill(
    Arr::only($statis,[
    'device','single_number','single_id',
    'total_number','good_num','person_id',
    'images','good_num_statis','input_at','output_at'
    ])
    )->fill([
    'video_id' => $request->video_id
    ]);
    }

    DB::transaction(function () use ($models){
    foreach ($models as $model){
    $model->save();
    }
    });

    return $this->ok(
    ['msg' => 'ok']
    );
    }
    ```
    这是我前几天写的,共 820 字符。

    换成 go:
    ```
    var requestData map[string]interface{}
    if err := json.Unmarshal(c.Ctx.Input.RequestBody, &requestData); err != nil {
    c.Data["json"] = map[string]interface{}{"error": "Invalid request format"}
    c.ServeJSON()
    return
    }

    // Get video_id from request
    videoID := requestData["video_id"].(string)
    ...
    from chatgpt
    ```
    2458 字符
    2024
        30
    2024  
       137 天前   ❤️ 1
    市场份额不会说谎,管理后台、内容站清一色是 PHP ,可能其他所有语言加起来的份额都没有 PHP 大。
    1. 管理系统,例如游戏领域,无论用什么语言开发的游戏,大概率还是要配一套 PHP GM 。
    2. 内容站更是了,新闻站点、贴吧都是

    其他脚本类型的语言例如 py 、node ; 有优点,但是缺点更大。
    py: "WEB"基本只有运维系统这个领域超过了 PHP, 因为曾经 PHP 常驻应用模式不是主流。py 开发复杂逻辑太难阅读了,curd 又是频繁改动的。py 在智能领域是瑶瑶领先,但是 web 是真打不过。
    node:国内小众,开发起来还不错,但是调试太难,例如闭包后,丢失上下文,基本没有办法监控一个请求有哪些逻辑(请求参数、影响结果、过程 LOG 、 有哪些对外部请求等等),而闭包用法处处都是。
    zjsxwc
        31
    zjsxwc  
       137 天前
    php 优点是:少写代码,且通俗易读。

    Java spring 属于多写代码,sping 一上就变成晦涩难读。
    go 属于多写代码。
    ruby ror 属于少写代码,但猴子方法把代码变的晦涩难读。
    js 属于 async/await 把代码变的晦涩难读。
    xiebinbin666
        32
    xiebinbin666  
       137 天前
    php 开发快啊
    一个人 我两天 在需求明确下 干一个后台
    用这 flamentphp
    zjsxwc
        33
    zjsxwc  
       137 天前
    @zjsxwc #30
    强类型的 python ,也属于多写代码
    qwedcxsaz
        34
    qwedcxsaz  
       137 天前
    laravel 重度用户,轮子够多,什么需求都能满足

    我之前发帖过的 [第一次做全栈,AI 考研英语,希望听听大家的意见和批评,谢谢各位!]( https://v2ex.com/t/1046939?p=1#reply22),用的 Lumen TDD 模式开发,后端占总开发的时间估计只有 20%,剩下的时候全都去弄前端和 ui 了
    atan
        35
    atan  
       137 天前
    livewire+tailwind 前后端开发效率直线上升,如果算上后台管理再加个 filament 太轻松了
    aaronnum7
        36
    aaronnum7  
       137 天前
    1 、开发快。一个基本的 Web 请求,Go 的话,需要先定义参数绑定结构体,响应结构体。PHP 不需要,直接读请求参数,输出直接 json_encode 。大部分 Web 业务,都是增删改查,涉及到的大多也是数组对象的一些操作。PHP 的数组和内置函数十分强大。
    2 、调试快。如果发现某个地方有问题,直接改下代码,刷新页面就可以了。Go 的话,需要重新编译再执行。PHP 的 var_dump 可以直接输出变量的信息,简单粗暴。Go 也有断点可以调试,但是复杂结构的信息不如 var_dump 的直观。
    3 、PHP 麻烦的地方,一个就是运行环境相对复杂一些,另外就是性能和并发问题。现在也有其他解决方案。
    Mrun
        37
    Mrun  
       137 天前
    laravel 的 ORM ,是我做过的后端开发语言框架里面,最强的
    PIECEx
        38
    PIECEx  
       137 天前   ❤️ 3
    那是当年 Java 没 spring boot ,需要写的东西太多太重,也没 k8s 没 docker ,等等没有那种傻瓜式的一键部署的东西,并且 Jenkins 没那么的好用。
    可是现在 Java 也行了,并且 Java 代码的优点刚好适用于目前的商业环境,没有 C++那样的复杂度,没有 PHP 的零碎,大型项目代码多了,比其他语言更好维护,并且开源社区给力,有问题有真大佬解惑,解决问题效率高的多。
    毕竟 PHP 的简洁快速是有代价的(项目太大没有约束,写的太随意别人根本看不懂,基本无法维护)。
    C 系的复杂度也有代价,只有维护过大型项目的人才知道维护效率多低,有时候多了一个维度后,复杂度指数级上升,对于从业人员要求更高。
    而 Java 属于刚好找到了一个甜点,干碎了其他的语言,荣登 top 。
    tabris17
        39
    tabris17  
       137 天前
    PHP 可以脱离框架和不依赖外部组件裸写 WEB 业务,这是其他语言做不到的。连 node.js 也做不到这一点
    Felldeadbird
        40
    Felldeadbird  
       137 天前
    不需要类型判断是最强的。结合万能的 array ,让人欲罢不能。
    rahuahua
        41
    rahuahua  
       137 天前   ❤️ 1
    动态语言开始写的爽,时间一长就是灾难,当然也可能产品死得快体验不出来
    bigcat133
        42
    bigcat133  
       137 天前   ❤️ 2
    这个说法最早是 php3 时代,可以轻松的将 php 当作一个模板系统,更新页面不用编译重启,还带各种语法糖帮你简写,新手上来就可以做些东西,也不用学什么面向对象、mvc 之类的东西特别是对比 java 那套东西简直无脑开发,当年很多新人入行就是靠的这个,项目配置不清楚可以直接用 php_info 来查看,相比现在做个东西起步就是要上手一个框架搭建还需要脚手架来支撑简直不要太 easy ,引入库也超简单。
    错误处理也超简单,很多语言里的错误他直接抛个警告就完事,而且还可以在配置中将警告忽略,完全不用理会,很多时候开发人员只要页面显示的内容正确就完全忽略了这些警告
    而且以前很多公司会用这玩意的原因还有一个就是生成页面缓存超容易,里面有一个 ob 系列的函数专门做这个处理,可以直接缓存页面的输出到磁盘,降低服务器端渲染的压力

    只不过当前后端分离开始流行后 php 的这些优势就逐渐降低了,web 开发的复杂度也开始上升,这种时候 php 的一些弱点也开始出现,所以 php 也开始逐渐转向一些复杂框架结构,而这种时候我感觉 php 相对其他语言并不一定有什么优势
    jonsmith
        43
    jonsmith  
       137 天前 via Android
    写后台,配合一些脚手架,不用写多少代码,效率很高。
    缺点是,弱类型虽然方便,但写的不规范,很容易出 bug 。
    lucasj
        44
    lucasj  
    OP
       137 天前 via Android
    大佬们,下面这套 Java 技术栈如何?我感觉也挺快的

    Kotlin + Spring Boot + JPA/Mybatis Plus + JRebel 插件 + Vue.js + Vite + Element Plus + GitHub Action
    DOLLOR
        45
    DOLLOR  
       137 天前 via Android   ❤️ 1
    @zjsxwc
    async/await 还难读?是因为喜欢 callback 嵌套吗?
    danhahaha
        46
    danhahaha  
       137 天前
    就在你调研使用什么语言框架的几天时间里,人家已经搭建好后台,挂到服务器上运行了,至于用户量速度安全这些小问题相信后人的智慧
    hukei
        47
    hukei  
       137 天前
    tp3+layui 梭哈
    maigebaoer
        48
    maigebaoer  
       137 天前 via Android
    只需要懂 array 就能开发了,这门槛够低了吧
    sagaxu
        49
    sagaxu  
       137 天前
    ssh xxx
    vim
    balabala 一通改
    :x
    然后浏览器 F5 看效果

    不编译,不打包,不重启服务
    zjsxwc
        50
    zjsxwc  
       137 天前
    @DOLLOR #45 你简单代码,当然可以阅读,但遇到复杂点的业务,多个 await 相互循环调用可以把你绕晕,还不如直接 promise 。


    PS 补充 js 的的另一个大缺点:
    不能正常处理 64 位整数的基本运算,node 作为服务端 js 的实现,于是只能用 53 位的数字运算,整数用 53 位表示,浮点数也是 53 位。

    于是如果一个正常的数据库( mysql 、sqlserver 、sqlite...)返回一个稍微大点的常见的 bigint 类型的有符号整数,比如 ~(1<<63) = (1<<63) -1 = 9223372036854775807 ,那么别的语言收到的都是这个数 9223372036854775807 ,但唯独 node 由于先天的残缺收到的值变成了这样:

    ```
    >let bigintFromDB = 9223372036854775807;
    >console.log(bigintFromDB);
    9223372036854776000
    ```
    看到没,js 把 9223372036854775807 变成了 9223372036854776000 ,最后几位全变 0 了。

    由于历史兼容原因,js 的数字运算在语言层面是残缺且无法修复的,现在 cpu 都是 64 位的,64 位的整数正常加减乘除运算是最基本的使用需求。
    awalkingman
        51
    awalkingman  
       137 天前
    @ixixi 我懂你!
    DOLLOR
        52
    DOLLOR  
       137 天前
    @zjsxwc
    let bigintFromDB = 9223372036854775807n
    console.log(bigintFromDB)
    // 9223372036854775807n
    DOLLOR
        53
    DOLLOR  
       137 天前
    另外我看不懂“多个 await 相互循环调用”是表达什么……
    keller
        54
    keller  
       137 天前   ❤️ 4
    我认识的大多数 PHP 程序员都可以独立完成一个完整的项目(前后端运维部署等)
    而我认识的 JAVA 程序员中很少有人能做到这一点
    zjsxwc
        55
    zjsxwc  
       137 天前
    @DOLLOR #52 那么问题来了,你能不能让 mysql 每个 sql 查询得到的整数后面都多一个字母 n ,请写出 sql 语句。
    DOLLOR
        56
    DOLLOR  
       137 天前
    @zjsxwc
    mysql.createConnection({
    supportBigNumbers: true,
    bigNumberStrings: true
    });
    shiny
        57
    shiny  
       137 天前
    年轻的时候直接在生产环境做开发。后来有个小工具开发着开发着发现,居然还有这么多人在用。
    wangritian
        58
    wangritian  
       137 天前
    @PIECEx 刚好 php python go java 都有完整项目经验,java 使用率最高的原因绝对跟语言本身和 spring 的套娃设计无关,中小项目仍然是 php 领先,写成什么样其实看人不看语言。但 java 有大厂背书,大环境整体方向卷,最重要的生态最强大,从业人员也慢慢都向 java 靠拢。仅论开发效率,真的根本没法跟 php 比
    zjsxwc
        59
    zjsxwc  
       137 天前
    @DOLLOR #56 这样不行,这样数据库返回的数字都变成字符串了,能不能把数据库返回的数字变 new BigInt()
    DOLLOR
        60
    DOLLOR  
       137 天前
    mshx1
        61
    mshx1  
       137 天前
    先不说别的,你就说 array 好不好用吧
    sagaxu
        62
    sagaxu  
       137 天前   ❤️ 1
    @zjsxwc await 不如 callback?

    for (...) {
    if (await ...) {
    continue;
    }

    if ((await ... || await ...) && (await ... || await ...)) {
    await ...
    }
    }

    这种逻辑用 promise 更简单?
    qiaobeier
        63
    qiaobeier  
       137 天前   ❤️ 1
    @ixixi 装个浏览器插件 F5 都省了
    linauror
        64
    linauror  
       137 天前
    目前写一些需要立即使用的处理数据的脚本,都是用 PHP ,就是快
    treblex
        65
    treblex  
       137 天前
    https://github.com/crmeb/CRMEB/blob/3cd421d9873ed8c937460cc72f8bfbedf2a261d6/crmeb/app/services/order/StoreOrderServices.php

    举个例子,array 到底有多好用😂,但这也是我不太喜欢 php 的原因
    jackerbauer
        66
    jackerbauer  
       137 天前
    强大的内置函数,万能的 array ,好用的 ORM 加上 FPM 加持,不说了,我写的我的 PHP 代码去了
    sayitagain
        67
    sayitagain  
       137 天前   ❤️ 4
    作为一个 phper ,这个帖子看的我高潮
    gqiuyuebai
        68
    gqiuyuebai  
       137 天前
    @sayitagain php 天。。。。。呜呜呜呜呜
    slion
        69
    slion  
       137 天前
    看了这么多大佬的回复,突然想起一句话:PHP 是世界上最好的语言
    NoobNoob030
        70
    NoobNoob030  
       137 天前
    PHP 是世界上最好的语言
    yc8332
        71
    yc8332  
       137 天前
    脚本语言的优势,然后又是弱类型的。。。快速开发真的方便,有问题,代码上去马上就能生效。
    sky9401
        72
    sky9401  
       137 天前
    至少语法方面,比 node 不知道优雅到哪里去了
    array 和 orm ,以及非常完善的标准库,写起来非常爽。
    yellowsky
        73
    yellowsky  
       137 天前
    Java 可以代表富人阶级,php 可以代表中产阶级和广大无产阶级,你可以说 php Low ,不高大上,甚至很屌丝,但是它群众基础好,易用亲民,低成本,高产出。
    james122333
        74
    james122333  
       137 天前 via Android
    1. 阵列
    2. 内置函数
    3. 官方文档(含范例)

    当然 cgi 模式下可以 F5 立马看效果是额外优点没错
    ChainLock
        75
    ChainLock  
       137 天前
    @aababc app 死是什么
    retrocode
        76
    retrocode  
       137 天前   ❤️ 1
    PHP 开发体验没得说, 要是团队稳定,或正规公司有专门的规范管理还好.
    但问题是 PHP 太过敏捷了, 如果你接手过一些团队变动多次的 php 项目, 尤其外包项目明显, 你就会明白 php 的恐怖之处了. 这些老哥改 php 代码都不过脑子的, 只要不报错就完事 OK.

    突然出现的全局变量/全局函数. 业务代码里任何一个地方都能出现的随意跳转, for 循环里查树结构 sql, 变态一点的在模版文件里直接查 sql. 每每想起我接手过的 php 项目就头皮发麻.

    最骚的一个操作, 曾经接手一个项目, 客户说性能太慢让我优化下, 我一步一步 debug, 发现前一个老哥在 index.php 引入的一堆依赖里的某嵌套层次很深的地方, 加的日期+域名双重判断随机睡眠 10 到 120 秒...
    lshero
        77
    lshero  
       137 天前
    现在有 serverless 其实 JS 就可以一把梭,但是 JS 现在的复杂的工程化感觉又让这一切失去了动力。
    xiangyuecn
        78
    xiangyuecn  
       137 天前
    不晓得为咋楼上都说 array 好用。。。

    只有我一个人觉得 php 的 array 反人类吗? array 是值类型,直接传递将会复制一份,不加&没法修改原 array ,加了&,你就得配套 unset ,要是引用类型,啥毛病没有。如果我需要用到这个很少会用到的复制,我完全可以调个函数来自己复制
    caqiko
        79
    caqiko  
       137 天前   ❤️ 1
    这些特性似乎比较像 python django?
    horizon
        80
    horizon  
       137 天前   ❤️ 1
    @sky9401 #70
    php 语法比 js 优雅?
    看到那么多$我就想吐
    liubaicai
        81
    liubaicai  
       137 天前
    哈哈哈
    yogogo
        82
    yogogo  
       136 天前   ❤️ 1
    Java 和 PHP 互写的表示,Java 越来越像 PHP ,PHP 越来越像 Java
    james122333
        83
    james122333  
       136 天前 via Android
    @xiangyuecn

    这才是对的 複制值与参考混淆才是坑
    hubqin
        84
    hubqin  
       136 天前
    写完 go 再回来用 php 的 array ,觉得简直像瞎子赶路, 变得非常不适应了。强类型语言改点代码真的爽,重构分分钟钟的事。
    thoo61871
        85
    thoo61871  
       136 天前 via iPhone
    都有 AI 了 随便一个语言加上趁手的框架 效率大差不差
    xierqii
        86
    xierqii  
       136 天前   ❤️ 1
    动态类型一时爽,代码重构火葬场
    magiclx
        87
    magiclx  
       136 天前   ❤️ 1
    PHP 是服务器端脚本,这意味着保密,可以保护程序的实现。
    PHP 代码可嵌入 HTML ,这意味着灵活,可按页面快速完整逻辑。
    PHP 以原生代码广泛支持数据库,这意味着快速存取数据。
    PHP 易于学习,语法类似于 C ,容易上手,这意味着容易找到 PHP 编程的人。
    PHP 兼容主流平台。
    PHP 可扩展,这意味着,在专有领域,也有解决方案。
    PHP 框架和 CMS:这意味着大量成熟应用,开箱即用,成本低,自己定制开发也有 Laravel 、Symfony 和 CodeIgniter 。
    PHP 是开源的,非常受欢迎,社区也很 nice ,成功案例有 WordPress 、Facebook 和 Wikipedia 。
    PHP 的性能还在提升,支持现代编程实践,这说明生态有活力,不会被时代淘汰。
    james122333
        88
    james122333  
       136 天前 via Android
    @magiclx

    第一个就错了
    v2bili
        89
    v2bili  
       136 天前
    说 array 的都是 PHP 小白, 应该说: [ ]
    yunye
        90
    yunye  
       136 天前
    @horizon 你居然不喜欢美元
    mshadow
        91
    mshadow  
       136 天前 via Android   ❤️ 1
    中小项目用确实快,大型项目一定会成为屎山。
    大型项目需要严格执行代码规范、CR 、代码审查,禁用魔法操作,如果可以最好用 php8 以上的版本然后当强类型来写。但这对团队要求太高了,招到靠谱的 php 真的不如 java/go 容易。
    总结,FPM 制约了上限,弱类型无限降低了下限。
    shuimugan
        92
    shuimugan  
       136 天前   ❤️ 7
    要看历史发展的,十年前接的项目大部分是各种商城、CMS 、论坛,很多开源项目可以利用,套个模板加个插件改一改就上线了。
    上线部署也很粗糙,大部分是 FTP 上传后刷新,版本控制都少。给客户演示时还能当场上服务器改代码,保存立马生效。
    大部分人都不会断点调试,就在代码里 var_dump 变量然后 exit 结束脚本,然后回浏览器按一下 F5 看输出结果然后继续写。
    密码加密不是 md5 就是 sha1 ,这些都是内置函数。
    写 Java 的还在纠结 json 库用哪个,选了 Fastjson 就有福了,一部分人整天在升级版本修漏洞,另一部分连自己系统被干了都不知道,而 JSON 处理在 PHP 里也是内置函数。
    写 Java 的还在头疼日期和时间戳之间的处理,PHP 一个万能 date 函数就解决 99%的场景了。
    写 Java 的还在头疼 url 参数编解码、特殊字符转义,PHP 内置函数又搞定了。
    写的代码运行出错,一行配置或者代码前面加个 @ 就能抑制错误继续跑,try/catch 都不用,要是写 Java 还在挠头哪来的空指针。
    前后端没分离的项目,还在纠结模板引擎选什么,写 PHP 的在包含 HTML 文本 PHP 的代码中改得飞快。
    写 Python 的还在吵 Django 和 Flask 到底要用哪个,吵完了发现怎么上线还要套 Gunicorn 之类好麻烦。
    写 Ruby 的表示 Ruby on Rails 非常牛逼,就是语言小众招不到人。
    写 Node.js 的还在回调地狱里出不来。

    在那个年代写 PHP ,你就说快不快吧。
    fuyun
        93
    fuyun  
       136 天前   ❤️ 2
    要说 JSON ( JavaScript Object Notation )的支持,难道不应该是 JS 吗?

    自从有了 Node.js 就淡化 PHP 了,Array 、JSON 、弱类型、强类型( TS )、日期( moment )、工具库( lodash )、异步、同步、流、模板引擎、框架、前后端分离、AI 、前后端同构、代码规范( ESLint 、TSLint )、测试、部署、热加载……不要太爽!
    唯一不爽的是 node_modules 太臃肿了……囧 ing……
    longnight
        94
    longnight  
       136 天前   ❤️ 1
    接触过的 PHP 项目不多。这些项目没一个带测试,写它们的都是些查 CSDN 那种人;全然屎山难以接手、重构。所以对 PHP 界没有好印象。
    lilililili2020
        95
    lilililili2020  
       136 天前 via Android
    实用是王道。往往项目死了还在追求技术
    rulagiti
        96
    rulagiti  
       136 天前
    起码 array 是真的方便 +10086
    draguo
        97
    draguo  
       136 天前
    @v2bili 反了,那都是老手,php5.4 以后才能用 [ ] 的
    suren1986
        98
    suren1986  
       136 天前
    如果是简单的需求,Java 还在定义模型,PHP 已经写完逻辑开始调试了。
    Duanpei
        99
    Duanpei  
       136 天前
    php 开发效率快是因为他的 array 无敌
    realJamespond
        100
    realJamespond  
       136 天前
    不用编译,直接改脚本直接出结果还不逆天? java 还要编译部署
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2820 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 13:05 · PVG 21:05 · LAX 05:05 · JFK 08:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.