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

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

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

    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 代码 😂
    zpfhbyx
        26
    zpfhbyx  
       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   ·   实用小工具   ·   2681 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:57 · PVG 22:57 · LAX 06:57 · JFK 09:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.