PHP 8 所有新特性一览和代码示例 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nonfu
V2EX    PHP

PHP 8 所有新特性一览和代码示例

  •  
  •   nonfu 2020-10-27 15:47:10 +08:00 5542 次点击
    这是一个创建于 1891 天前的主题,其中的信息可能已经有所发展或是发生改变。

    PHP 8.0 正式版还有一个月就要发布了,是时候在本地编译安装 RC2 版本体验所有新特性了:

    https://xueyuanjun.com/post/22104

    在所有新特性中,注解应该是最有吸引力的了,会给 PHP 开发引入全新的模式。

    39 条回复    2020-10-28 16:33:17 +08:00
    yuancoder
        1
    yuancoder  
       2020-10-27 15:56:05 +08:00
    这玩意有啥用
    mokeyjay
        2
    mokeyjay  
       2020-10-27 16:04:46 +08:00
    `?->` 实在是太甜了
    vishun
        3
    vishun  
       2020-10-27 16:16:58 +08:00
    厉害了,注解确实挺方便的。
    wangritian
        4
    wangritian  
       2020-10-27 16:19:02 +08:00
    一直很喜欢 python 的参数设计,没想到 php 也有了
    nonfu
        5
    nonfu  
    OP
       2020-10-27 16:25:35 +08:00
    @mokeyjay 感觉一下子就能把代码库的代码量减少 10% 哈哈 再不用 if 判断或者引入空对象模式了
    nonfu
        6
    nonfu  
    OP
       2020-10-27 16:28:59 +08:00
    @vishun @wangritian 是的 以后日志 中间件之类的业务逻辑实现就更方便了
    hakono
        7
    hakono  
       2020-10-27 16:29:31 +08:00
    居然已经要发布了,不知道 laravel 啥时候支持,性能会不会有提升
    不过生产环境迁移到 php8 估计还得等个半年一年解决好了兼容性 /BUG 等问题之类吧
    libasten
        8
    libasten  
       2020-10-27 16:31:26 +08:00 via Android
    不是已经要死亡了吗?咋还发新版本了?
    nonfu
        9
    nonfu  
    OP
       2020-10-27 16:33:31 +08:00
    @hakono 估计要到明年 9 月份的 LTS 版本会支持,按照现在的节奏,8.x 对应 php 7.3,明年 2 月份的 9.x 对应 php 7.4,有了注解后,至少日志和中间件模块可以重写了。
    nonfu
        10
    nonfu  
    OP
       2020-10-27 16:35:04 +08:00
    @libasten PHP:我不要面子的啊,好歹还在前十里面,好歹世界上还有接近 80%的网站基于 PHP 驱动
    baobao1270
        11
    baobao1270  
       2020-10-27 16:36:35 +08:00
    感觉 PHP 越来越像一门现代语言了(?

    遗憾的是,泛型依然没有
    zsdroid
        12
    zsdroid  
       2020-10-27 16:36:40 +08:00
    注解这套东西还得 ide 的支持
    nonfu
        13
    nonfu  
    OP
       2020-10-27 16:40:57 +08:00
    @baobao1270 哈哈 动态语言要泛型干啥。。。数组里面随便塞,来者不拒
    eason1874
        14
    eason1874  
       2020-10-27 16:41:30 +08:00
    PHP7 之前就不怎么写 PHP 代码了,现在不怎么认识 PHP 了
    nonfu
        15
    nonfu  
    OP
       2020-10-27 16:42:14 +08:00
    @zsdroid phpstorm 2020.3 版本已经支持了
    nonfu
        16
    nonfu  
    OP
       2020-10-27 16:45:12 +08:00   1
    @eason1874 不会的 最后大家都长得差不多了 动态语言为了安全和性能抄抄静态语言 静态语言为了方便和编码效率抄抄动态语言 然后在语法糖方面不管动态静态相互抄抄 大抵就是这样
    CodeCodeStudy
        17
    CodeCodeStudy  
       2020-10-27 16:47:56 +08:00
    PHP 9 有什么计划?
    OldActorsSmile
        18
    OldActorsSmile  
       2020-10-27 16:53:44 +08:00
    一直用框架。。如果不是原生开发,一般不怎么关注版本问题
    polymerdg
        19
    polymerdg  
       2020-10-27 16:57:12 +08:00
    @mokeyjay 有意思 省去了很多 IF
    lovecy
        20
    lovecy  
       2020-10-27 16:57:49 +08:00
    很香,然而我司甚至还有 5.2 的代码
    nonfu
        21
    nonfu  
    OP
       2020-10-27 17:03:23 +08:00
    @OldActorsSmile 没事,Laravel 一直紧随潮流,用 Laravel 最新版也就等同于追着 PHP 版本跑了
    nonfu
        22
    nonfu  
    OP
       2020-10-27 17:03:55 +08:00
    @CodeCodeStudy PHP 9 估计得四五年以后的事情了
    nonfu
        23
    nonfu  
    OP
       2020-10-27 17:04:27 +08:00
    @lovecy 。。。连命名空间都没有 Composer 都不能用?
    tabris17
        24
    tabris17  
       2020-10-27 17:07:33 +08:00
    啥时候能吧变量名前的$去掉就真的脱胎换骨了
    nonfu
        25
    nonfu  
    OP
       2020-10-27 17:12:24 +08:00
    @tabris17 这个不行 如果不是缺钱 谁去写 PHP 代码
    justseemore
        26
    justseemore  
       2020-10-27 17:18:45 +08:00
    @tabris17 改成 @么。。
    newtype0092
        27
    newtype0092  
       2020-10-27 17:27:58 +08:00
    参数列表中允许出现可选的尾部逗号,这个好像 7.4 也是支持的?
    nonfu
        28
    nonfu  
    OP
       2020-10-27 17:43:43 +08:00
    @newtype0092 不支持啊 rfc 里面该特性目标版本就是 8.0: https://wiki.php.net/rfc/trailing_comma_in_parameter_list
    ben1024
        29
    ben1024  
       2020-10-27 17:45:52 +08:00
    注解不太喜欢
    akira
        30
    akira  
       2020-10-27 18:10:59 +08:00
    新增对命名参数的支持 , 终于支持了啊。。
    OldActorsSmile
        31
    OldActorsSmile  
       2020-10-27 20:57:34 +08:00
    @nonfu

    ThinkPHP 。。让您见笑了
    SaigyoujiYuyuko
        32
    SaigyoujiYuyuko  
       2020-10-27 22:23:56 +08:00
    冲冲冲
    meshell
        33
    meshell  
       2020-10-28 09:43:23 +08:00
    @nonfu 7.4 支持的。
    meshell
        34
    meshell  
       2020-10-28 09:43:54 +08:00
    @nonfu 也可以用
    newtype0092
        35
    newtype0092  
       2020-10-28 10:19:38 +08:00
    @nonfu 我之前测试环境是 7.1,安装了 Laravel8 最新版,结果运行报错,看了下就是参数列表末尾多了个逗号,我以为是语法错误。后来升级到 7.4 发现可以正常跑了,才知道有这个修改。
    nonfu
        36
    nonfu  
    OP
       2020-10-28 12:01:32 +08:00
    @meshell 可能是后面迭代的时候加上了
    nonfu
        37
    nonfu  
    OP
       2020-10-28 12:03:44 +08:00
    @OldActorsSmile 在我这里没有语言框架鄙视链 合适的就是最好的 跑车再牛逼也不敢开到山沟里去
    nonfu
        38
    nonfu  
    OP
       2020-10-28 12:05:01 +08:00
    @newtype0092 哈哈哈 原来如此 Laravel 8 要求 php7.3+ 莫非 7.3 就支持了?
    binbin0915
        39
    binbin0915  
       2020-10-28 16:33:17 +08:00
    PHP 宇宙第一.....
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2335 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 03:01 PVG 11:01 LAX 19:01 JFK 22:01
    Do have faith in what you're doing.
    ubao msn 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