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

PHP 8.0.0 Released!

  •  2
     
  •   tyzrj766 2020-11-27 00:09:45 +08:00 14032 次点击
    这是一个创建于 1781 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 越来越难用了,国内没一个好用的源,每次安装都得换不同的源才能把包装齐
    solu
        16
    solu  
       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 张口就来?
    keepfun
        57
    keepfun  
       2020-11-27 14:05:09 +08:00   1
    希望能重夺江山
    solu
        58
    solu  
       2020-11-27 14:06:15 +08:00
    @yklaxds #55 愿闻其详,麻烦分析 PHP 兼容问题
    novaa
        59
    novaa/strong>  
       2020-11-27 14:09:28 +08:00
    yes baby
    pein
        60
    pein  
       2020-11-27 14:28:50 +08:00
    多线程不要想了基本不可能,引入协程就很棒,PHP 一旦全面协程化,预计会焕发第二春,官方是不指望了,某 s 开头的扩展不靠谱,谁认识鸟哥的联系他让他带领团队开发个协程分支啊,开发资金可以众筹。
    novaa
        61
    novaa  
       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 项目有利
    2kCS5c0b0ITXE5k2
        77
    2kCS5c0b0ITXE5k2  
       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


    在我的帖子在 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     Solana     875 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 19:15 PVG 03:15 LAX 12:15 JFK 15:15
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86