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

PHP 8.0.0 Released!

  •  2
     
  •   tyzrj766 · 2020-11-27 00:09:45 +08:00 · 12750 次点击
    这是一个创建于 1217 天前的主题,其中的信息可能已经有所发展或是发生改变。
    107 条回复    2020-12-02 12:24:13 +08:00
    1  2  
    sagaxu
        1
    sagaxu  
       2020-11-27 00:26:32 +08:00 via Android
    php 5 跟 java 6 一样顽固,php 7 跟 java 8 一样坚挺,php 8 估计会跟 java 11 一样普及缓慢
    lights
        2
    lights  
       2020-11-27 00:30:11 +08:00 via iPhone
    Php 多好一语言呀
    MeteorCat
        3
    MeteorCat  
       2020-11-27 00:41:38 +08:00 via Android
    有 vm 了吗?
    Myprincess
        4
    Myprincess  
       2020-11-27 00:52:18 +08:00
    有没有 PHP 运维呀?修 BUG 的兼职。
    s609926202
        5
    s609926202  
       2020-11-27 00:54:43 +08:00 via iPhone
    Php 是最好的语言
    yklaxds
        6
    yklaxds  
       2020-11-27 01:40:12 +08:00 via Android   ❤️ 1
    天天水版本号,也不知道向下兼容一下
    maigebaoer
        7
    maigebaoer  
       2020-11-27 01:50:59 +08:00 via Android
    php 的版本发布很激进🤣不过作为世界上最好的语言,激进点有好处,中小项目的历史包袱没那么大。
    yunye
        8
    yunye  
       2020-11-27 01:58:30 +08:00
    新东西挺多的
    akira
        9
    akira  
       2020-11-27 02:17:59 +08:00
    有几个特性看起来不错,大幅减少代码量了,写起来也舒服了很多
    jhdxr
        10
    jhdxr  
       2020-11-27 02:57:31 +08:00   ❤️ 22
    @yklaxds ?????? PHP 槽点很多但第一次见有人吐槽 php 向下兼容性的。。。你是还在写 4.x 年代的代码吗?
    lihongming
        11
    lihongming  
       2020-11-27 03:11:37 +08:00 via iPhone
    @jhdxr 对程序员没啥影响,主要是运维头疼,升级了环境,老代码就罢工了。
    msg7086
        12
    msg7086  
       2020-11-27 06:39:39 +08:00
    @lihongming ermmm 环境不是跟着代码版本要求走的吗……
    yogogo
        13
    yogogo  
       2020-11-27 07:33:09 +08:00 via Android
    @yklaxds 黑?不去看看隔壁 python 升级?
    liuzhaowei55
        14
    liuzhaowei55  
       2020-11-27 07:40:08 +08:00 via Android
    @sagaxu 我觉得不一定,PHP8 有几个特性还是很吸引人的,性能上也有一定提升
    zachlhb
        15
    zachlhb  
       2020-11-27 08:20:24 +08:00 via Android
    php 的 composer 越来越难用了,国内没一个好用的源,每次安装都得换不同的源才能把包装齐
    solupro
        16
    solupro  
       2020-11-27 08:21:52 +08:00 via iPhone
    @yklaxds 张口就来???
    yekern
        17
    yekern  
       2020-11-27 08:23:54 +08:00
    反正我们写代码很激进的.一般都是紧跟版本, 使用新特性
    mitu9527
        18
    mitu9527  
       2020-11-27 08:25:50 +08:00
    终于出来了,自己可以先尝尝鲜,不过产品上还是等一年后再升级吧。
    des
        19
    des  
       2020-11-27 08:28:46 +08:00 via iPhone
    @msg7086 @lihongming
    运维表示没事:你升级它干嘛,之前不用的好好的,给我们加活?
    love
        20
    love  
       2020-11-27 08:46:53 +08:00 via Android   ❤️ 1
    @zachlhb 这是 PHP 的问题吗?这是你的问题。另外做开发哪有没有梯子的
    mitu9527
        21
    mitu9527  
       2020-11-27 08:56:55 +08:00   ❤️ 1
    @sagaxu 刚看了一下 PHP 8 的 Release Announcement,主要还是完成 PHP 7 没做完的工作,比如,继续加强类型系统并引入了一些新的语法和语法糖,进一步统一 PHP 内部代码和用户空间代码的错误处理方式,引进 JIT 。都是实用的特性,过渡上也没有什么可犹豫的点,我觉得普及起来不会慢。
    linxb
        22
    linxb  
       2020-11-27 08:57:28 +08:00
    @zachlhb https://developer.aliyun.com/composer 阿里云的源还不够你用吗
    CodeCodeStudy
        23
    CodeCodeStudy  
       2020-11-27 09:03:46 +08:00
    PHP8 跟 PHP7 的兼容性还挺好,普及应该比较快
    CodeCodeStudy
        24
    CodeCodeStudy  
       2020-11-27 09:38:08 +08:00
    PHP9 的计划是什么?
    mitu9527
        25
    mitu9527  
       2020-11-27 09:42:31 +08:00
    @CodeCodeStudy 现在就开始考虑 PHP 9 了?我觉得别说是我们,就算是鸟哥可能也不知道 。
    chotow
        26
    chotow  
       2020-11-27 09:44:22 +08:00   ❤️ 7
    作为一个 phper 感觉过年了,开心如此简单 😃
    lijialong1313
        27
    lijialong1313  
       2020-11-27 09:48:43 +08:00
    诶不是说 php8 不支持 windows release 下载的么……
    assad
        28
    assad  
       2020-11-27 09:49:14 +08:00 via Android
    @Myprincess 联系我啊
    assad
        29
    assad  
       2020-11-27 09:49:37 +08:00 via Android
    @yklaxds php 的兼容已经做的很不错啦
    ben1024
        30
    ben1024  
       2020-11-27 09:54:06 +08:00
    @zachlhb
    阿里的源还行,或者用 slince 的 (composer-registry-manager)[https://github.com/slince/composer-registry-manager] 切换下
    ben1024
        31
    ben1024  
       2020-11-27 09:55:06 +08:00   ❤️ 1
    @chotow 还真是 今天又是充满希望的一天
    CodeCodeStudy
        32
    CodeCodeStudy  
       2020-11-27 09:59:37 +08:00
    @mitu9527 发布一代,预研一代
    CodeCodeStudy
        33
    CodeCodeStudy  
       2020-11-27 10:01:30 +08:00
    @lijialong1313 以前 Windows 的版本是微软编译的,现在微软不干了,现在是 PHP 官方开发组自己编译
    TORYOI
        34
    TORYOI  
       2020-11-27 10:03:05 +08:00
    真香
    fkdtz
        35
    fkdtz  
       2020-11-27 10:04:21 +08:00
    @sagaxu 整挺好
    oneonesv
        36
    oneonesv  
       2020-11-27 10:08:25 +08:00
    Carlgao
        37
    Carlgao  
       2020-11-27 10:32:51 +08:00
    php8 类型系统越来越完善了,还引入了 WakeMap 为 Jit 优化做准备,什么时候要是能引入协程,去掉$符号就完美了。
    GM
        38
    GM  
       2020-11-27 10:38:51 +08:00
    @maigebaoer PHP 版本发布很激进???/黑人问号脸。
    zjttfs
        39
    zjttfs  
       2020-11-27 10:41:46 +08:00
    php 9 就可以搞多线程 /协程 了..
    lijialong1313
        40
    lijialong1313  
       2020-11-27 10:44:03 +08:00
    @CodeCodeStudy 这俩有啥区别啊……
    sorshion
        41
    sorshion  
       2020-11-27 10:45:42 +08:00
    $符号是特征,去掉就没识别度了
    wmwmajie
        42
    wmwmajie  
       2020-11-27 10:53:56 +08:00
    个人感觉 php 真正要起飞应该主要还是看 php9 是否包含协程这样的异步机制和连接池,能支持这两点直接起飞,PHP8 已经铺好了代码编译方面的优化,期待 php9 计划。
    zjsxwc
        43
    zjsxwc  
       2020-11-27 10:56:28 +08:00
    谁有 8.0 jit 性能提升数据 发出来看看
    mitu9527
        44
    mitu9527  
       2020-11-27 10:58:44 +08:00
    @zjsxwc 官方做了一些简单的基准测试。https://www.php.net/releases/8.0/en.php 里面有提到。
    mitu9527
        45
    mitu9527  
       2020-11-27 11:03:45 +08:00
    @wmwmajie 是啊,希望官方能支持协程和常驻内存,不过感觉这工作量有点大。
    danielhuo
        46
    danielhuo  
       2020-11-27 11:06:41 +08:00
    @Myprincess aHVvZGFuaWVsQGdtYWlsLmNvbQ==
    learningman
        47
    learningman  
       2020-11-27 11:09:13 +08:00
    @Carlgao 最后改叫 python (
    Felldeadbird
        48
    Felldeadbird  
       2020-11-27 11:25:17 +08:00
    @yklaxds 活久见,10 年来,第一次见吐槽 PHP 向下兼容。
    ben1024
        49
    ben1024  
       2020-11-27 11:33:48 +08:00
    @mitu9527 @wmwmajie
    swoole 开发组在做这个工作,如果能合并一起感觉好些
    mitu9527
        50
    mitu9527  
       2020-11-27 11:40:23 +08:00
    @ben1024 就是因为感觉官方不见得能吸纳 Swoole 才觉得工作量会比较大,希望结局能尽人意,也不枉众多 PHPer 们的期待。
    Immortal
        51
    Immortal  
       2020-11-27 11:44:57 +08:00
    PHP 作为当年的入行语言 我还是很有感情的
    从一定角度来看 真的挺好的
    主流 web 语言没有一个能像 php 这样丝滑更新的 都得自己整一套热重载
    keepeye
        52
    keepeye  
       2020-11-27 11:53:35 +08:00
    就差个原生协程了 加油
    yujieyu7
        53
    yujieyu7  
       2020-11-27 12:00:52 +08:00
    滋瓷一下
    meshell
        54
    meshell  
       2020-11-27 12:06:17 +08:00
    @mitu9527 看看 amphp 话说你们说得协程和 yield 有啥区别
    fox0001
        55
    fox0001  
       2020-11-27 13:24:24 +08:00 via Android
    say yes~
    yklaxds
        56
    yklaxds  
       2020-11-27 14:03:12 +08:00 via Android
    @solupro 张口就来?
    fenglangjuxu
        57
    fenglangjuxu  
       2020-11-27 14:05:09 +08:00   ❤️ 1
    希望能重夺江山
    solupro
        58
    solupro  
       2020-11-27 14:06:15 +08:00
    @yklaxds #55 愿闻其详,麻烦分析 PHP 兼容问题
    leonidas
        59
    leonidas  
       2020-11-27 14:09:28 +08:00
    yes baby
    pein
        60
    pein  
       2020-11-27 14:28:50 +08:00
    多线程不要想了基本不可能,引入协程就很棒,PHP 一旦全面协程化,预计会焕发第二春,官方是不指望了,某 s 开头的扩展不靠谱,谁认识鸟哥的联系他让他带领团队开发个协程分支啊,开发资金可以众筹。
    leonidas
        61
    leonidas  
       2020-11-27 14:48:11 +08:00
    谁来做个性能评测
    zjsxwc
        62
    zjsxwc  
       2020-11-27 14:53:16 +08:00
    @pein #60
    php7 开始不就早已支持协程 yield 生成器了吗
    mitu9527
        63
    mitu9527  
       2020-11-27 15:01:18 +08:00
    @zjsxwc yield 是生成器,本质上是一个迭代器,不是协程。
    shellic
        64
    shellic  
       2020-11-27 15:16:52 +08:00
    据说性能比 PHP7 还要高一些?
    Mrxx
        65
    Mrxx  
       2020-11-27 15:45:05 +08:00
    php 性能再好,wordpress 都能给你拖下来
    zjsxwc
        66
    zjsxwc  
       2020-11-27 15:48:55 +08:00
    @mitu9527
    额,本质上不都一样吗,

    当然如果说 python 的 gevent 这种与多进程用起来像的协程(提供了 fork/join ),
    那么 php7 确实还没有。

    而 swoole 的协程是抄了 golang 的 channel,又是另一种协程了。
    mitu9527
        67
    mitu9527  
       2020-11-27 16:28:42 +08:00
    @zjsxwc PHP 还没有原生支持协程,目前 PHP 想使用协程,主要是用 Swoole 。另外,我没听说协程在 PHP 中和生成器有啥关系。
    Evilk
        68
    Evilk  
       2020-11-27 17:01:39 +08:00
    @pein 同意,感觉鸟哥应该更靠谱一些,如果 PHP 原生支持协程,应该又会回到 2004 的巅峰,哈哈
    NoonTime
        69
    NoonTime  
       2020-11-27 17:34:17 +08:00
    @Mrxx 鸟哥关于 PHP8 中 JIT 开发历程的博文.统计 Wordpress top50 函数然后 JIT,性能提升 10%
    ryh
        71
    ryh  
       2020-11-27 17:59:23 +08:00
    https://wiki.php.net/rfc/constructor_promotion
    这个 rfc 真心不懂为啥这么做,虽然简单了很多,但很容易歧义吧,还是有 10 票反对很说明问题
    mitu9527
        72
    mitu9527  
       2020-11-27 18:29:15 +08:00
    @ryh 我觉得就是个语法糖,喜欢用就用,不喜欢用就不用,没啥影响的。就比如 PHP 的箭头函数我也不太喜欢,我觉得它没精简到表达式的级别,用起来感觉不太舒服,但有不少人觉得还可以。
    konakona
        73
    konakona  
       2020-11-27 18:51:00 +08:00
    @sagaxu 现在很多都已经容器化,加上 Symfony 系框架的推进,应该很快普及。233
    sagaxu
        74
    sagaxu  
       2020-11-27 19:09:42 +08:00 via Android
    @konakona
    @mitu9527
    @liuzhaowei55
    新项目估计明年就能用起来了,存量项目不是说升就能升的,尤其是那些没有高 unit test 覆盖率的项目。
    sagaxu
        75
    sagaxu  
       2020-11-27 19:28:36 +08:00 via Android
    @Evilk
    @pein

    php 协程缺乏应用场景,需要 php 协程的公司为什么不选择 go 呢,没有历史包袱的天生支持。

    拿 php 写常驻内存 service,需要更好的内存管理,php 现在的 gc 实现简陋,引用计数也不太容易支持多线程,搞不好还得来一个全局解释器锁。
    BBCCBB
        76
    BBCCBB  
       2020-11-27 19:52:07 +08:00
    @sagaxu 如果不用大改就能获取性能提升, php 有协程肯定对现有的 php 项目有利
    emeab
        77
    emeab  
       2020-11-27 20:00:39 +08:00
    @BBCCBB 就算有协程也不会无缝修改的。 肯定坑很多
    meshell
        78
    meshell  
       2020-11-27 20:01:01 +08:00   ❤️ 1
    zjsxwc
        79
    zjsxwc  
       2020-11-27 21:34:44 +08:00 via Android
    @meshell

    看了一个多小时才看明白,感觉就像,鸟哥在 php5 里面用 yield 生成器,造了个单片机非抢占式多任务系统,php 玩出了操作系统的味道,膜拜鸟哥!
    meshell
        80
    meshell  
       2020-11-27 22:38:09 +08:00
    @zjsxwc 这个是原文也是 PHP 开发组的,作者目前在 PHPstorm 开发组. https://nikic.github.io/2012/12/22/Cooperative-multitasking-using-coroutines-in-PHP.html
    whahuzhihao
        81
    whahuzhihao  
       2020-11-27 23:20:56 +08:00
    php 早就有协程了啊,只不过不像 golang 这么方便,比较像 lua 那种,要手动调度。
    baobao1270
        82
    baobao1270  
       2020-11-27 23:21:51 +08:00
    PHP Yes ! Exciting !

    个人比较关注语言方面的:
    联合类型、错误类型统一、命名参数,PHP 终于和主流语言接轨了
    注解这个真的是 Web 开发的福音
    Lemeng
        83
    Lemeng  
       2020-11-28 00:59:06 +08:00
    虽说江山不在,但 php 必须支持
    zachlhb
        84
    zachlhb  
       2020-11-28 09:03:53 +08:00 via Android
    @ben1024 用了,不行,有时候一大堆的失败
    zachlhb
        85
    zachlhb  
       2020-11-28 09:04:43 +08:00 via Android
    @linxb 阿里源有些包没有的,有些包特定的版本没有
    zjsxwc
        86
    zjsxwc  
       2020-11-28 09:20:37 +08:00
    我测试了 php8 开启 jit 在我电脑里的性能提升,提升巨大,见图:
    https://i.loli.net/2020/11/28/qSpY9niTcxfoy1L.png


    在我的帖子在 https://www.v2ex.com/t/603272


    @leonidas
    CodeCodeStudy
        87
    CodeCodeStudy  
       2020-11-28 10:49:51 +08:00
    @whahuzhihao 你指的是 yield 吗?那个不太好用,容易出错,像 Golang 和 Swoole 一样使用 go 包起来更方便些
    hantsy
        88
    hantsy  
       2020-11-28 11:08:15 +08:00
    PHP 8 这个不讲武德,这么多特性,还得分 7,8 个版本实现吧。看看现在的 C#,Java 每个大版本都在挤牙膏。

    看了一下 PHP 8 的 Match Expression,这个设计不错,不知道是否支持 Sealed Class 类似的 Class 匹配,有用过的回复一下。Java 中的实现直接复用 Switch,到最新的 15 还不支持 Sealed Class 。

    Attributes (或者 Java 中 Annotations )将原来的 Doctrine 中使用 Attribuite 直接标准化,辅助说明从 Comments 中直到放到代码上,语法更接近 C#,这算得上语法上的一次革命,不错。这个过程类似于 Java 中使用 Doclet (用过 Hibernate1.x 2.x 基本都是用过的 ) 到 Java 5 Annotations 。

    JIT 不用说了,大杀器,但这个不属于语言语法范围。
    hantsy
        89
    hantsy  
       2020-11-28 11:10:51 +08:00
    @sagaxu Java 是容易容器化的,你完全可以用最新 Java 15 的语法写程序,比如 record 在最新的 Spring 5 。3 可以轻松使用。Text Block 不讲了,如果你还在写 SQL 或者类似的 XXXQL,一下子感觉多行显示舒服多了。
    hantsy
        90
    hantsy  
       2020-11-28 11:18:46 +08:00
    @sagaxu Quarkus 很早之前有提醒可能新版本不支持 8,过渡到 11,但是但现在 Quarkus 还是在兼容 8,虽然邮件列表中很多人提议删除 8 的支持。个人觉得 Quarkus 一开始就是为容器准备的,用 Java 11 一点问题也没有。Quarkus 在 1 。0 的时候,它的介绍是 a container first framework. 现在网站上写的是 A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards,显然它又将 jvm 运行环境当成一种目标。
    sagaxu
        91
    sagaxu  
       2020-11-28 12:50:47 +08:00 via Android
    @hantsy Java 8 比预期的更坚挺,官方支持到 2030 年,Java 11 却只支持到 2026 。现在这个阶段哪个框架不支持 8 就是自掘坟墓。
    ahu
        92
    ahu  
       2020-11-28 12:55:50 +08:00
    https://www.php.net/releases/8.0/zh.php?lang=zh

    竟然有中文版,官方有心了!
    CodeCodeStudy
        93
    CodeCodeStudy  
       2020-11-28 14:06:09 +08:00
    @ahu 不错,看得很清楚
    1627072329
        94
    1627072329  
       2020-11-28 16:36:39 +08:00
    终于发布了,等好久了
    hantsy
        95
    hantsy  
       2020-11-28 17:07:33 +08:00
    @sagaxu 如果你做的是一些公共库,或者通用框架,考虑到兼容性,定格在 Java 8 无可厚非,毕竟要更多的考虑用户习惯。目前看到的可能 Helidon2 是第一个宣布 Java 11 起步的吧(太多的新特性,不得不放弃 8, 比如 reactive, 雇用 Rxjava 大师操刀,基于 Flow 重写,另外也启用了 Micronaut 的团队成员丰富功能 ),但它还在维护 Helidon1 。x ( Java8 )。

    但是如果自己的业务项目,完全可以跟进最新的 Java 版本,甚至可以使用一个 CI 来检测当前版本至最新的 ea 版本兼容性,代码可以一直持续跟进新语法。
    hantsy
        96
    hantsy  
       2020-11-28 17:08:25 +08:00
    好几年没写 PHP 代码了,得玩玩 PHP 了。
    limingxinleo
        97
    limingxinleo  
       2020-11-28 17:09:40 +08:00
    @pein 你们打算众筹多少钱,让财务自由的鸟哥,来做这个呢?
    jhdxr
        98
    jhdxr  
       2020-11-28 17:30:53 +08:00
    PHP 内置的 IO 相关的方法全是同步的,要支持异步的特性,那些方法大部分都得提供一个异步的版本(不然没啥意义)。工作量太大,目前还没有看到有任何人有去推动 /做这个的打算。
    sorshion
        99
    sorshion  
       2020-11-28 19:14:18 +08:00   ❤️ 2
    dd112389
        100
    dd112389  
       2020-11-29 02:35:32 +08:00
    PHP 是世界上最好的语言!
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3244 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 12:15 · PVG 20:15 · LAX 05:15 · JFK 08:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.