• 技术文章 >后端开发 >PHP8

    PHP 8.2 不再支持字符串中用${}插入变量了

    青灯夜游青灯夜游2022-05-11 21:13:30转载582
    PHP 社区 4 月底通过了一项只有一张反对票的提案,提案内容是在即将发布的 PHP 8.2 中,不再支持使用 ${} 在字符串中插入变量的语法(标记为弃用状态),并在 PHP 9 删除该语法。

    1.png

    目前 PHP 可通过以下方式在带有双引号 (") 和 heredoc 的字符串中插入变量。

    提交该提案的开发者 Ilija Tovilo 认为,第 1 和第 2 种方式各有利弊。第 3 和第 4 种写法则很容易混淆,并且 4 具有完全不同的语义 (variable variables),极少使用这种方式在字符串中插入变量。

    因此,Ilija Tovilo 提交的 RFC 正是建议在 PHP 8.2 中弃用上述 3 和 4 的语法,并在 PHP 9.0 中将其删除。

    var_dump("${foo}");
    // Deprecated: Using ${} in strings is deprecated
     
    var_dump("${(foo)}");
    // Deprecated: Using ${} (variable variables) in strings is deprecated

    对于此提案的影响,Ilija Tovilo 通过对 Packagegist 上的 Top 1000 仓库进行分析得出:上述 3 的语法有 267 次被使用,4 只有 0 次。

    分析源码:https://gist.github.com/iluuu1994/05427dd74100af8e41ebff3d4201742c

    Ilija Tovilo 认为,许多其他编程语言也使用 ${foo} 语法在字符串中插入变量,例如 bash 和 JavaScript(在模板字面量 Template Literals 中)。但它们的行为与在 PHP 中的不同。在 PHP 中,这种语法意味着定义可变的变量。在 JavaScript 中,它支持任意表达式。在 PHP 目前的形式中,上述选项 3 和 4 的用途有限,并且对于使用其他相似语法的编程语言的开发者来说,两者行为完全不同,因此会感到困惑。

    未来 Ilija Tovilo 希望支持如下语法:

    var_dump("{$:func()}")

    他认为,如果决定这样做,那么有必要先删除不太有用的选项,以避免进一步增加混乱。这就是 Ilija Tovilo 提交此 RFC 希望实现的目标。

    推荐学习:《PHP视频教程

    以上就是PHP 8.2 不再支持字符串中用${}插入变量了的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:OSC开源社区,如有侵犯,请联系admin@php.cn删除
    专题推荐:PHP8 php php字符串
    上一篇:一文深入了解 PHP 8 中的 JIT 下一篇:没有了
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• PHP8.1新特性大讲解之Fibers with a grain of salt• PHP8.1新特性大讲解之array_is_list功能• PHP8.1 正式发布,快来更新吧!• PHP8.1的十大新功能,快用起来吧!• 关于PHP8中match新语句的骚操作• TP框架V6.0.10LTS已发布(兼容PHP8.1)
    1/1

    PHP中文网