您现在的位置是:群英 > 开发技术 > PHP语言
php8.2为什么不再支持字符串中用${}插入变量了?
Admin发表于 2022-07-23 17:47:29687 次浏览
这篇文章给大家介绍了“php8.2为什么不再支持字符串中用${}插入变量了?”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“php8.2为什么不再支持字符串中用${}插入变量了?”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。




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

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

  • 直接插入变量: “$foo”

  • 在变量外添加花括号: “{$foo}”

  • $ 符号后面添加花括号: “${foo}”

  • 定义可变的变量语法 ( “${expr}”,等同于 (string) ${expr}

提交该提案的开发者 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 希望实现的目标。


关于“php8.2为什么不再支持字符串中用${}插入变量了?”的内容就介绍到这,感谢各位的阅读,相信大家对php8.2为什么不再支持字符串中用${}插入变量了?已经有了进一步的了解。大家如果还想学习更多知识,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: php8
相关信息推荐
2022-08-19 17:47:11 
摘要:这篇文章主要为大家介绍了python基于Bokeh库制作子弹图及瀑布图的实现示例教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
2022-04-29 12:03:05 
摘要:给大家带来一篇关于JS正则表达式完美实现身份证校验的实例讲解的相关教程文章,内容涉及到js、正则校验、js、正则校验身份证、JS正则表达式完美实现身份证校验功能等相关内容,更多关于JS正则表达式完美实现身份证校验功能的内容希望能够帮助到大家。
2022-01-22 17:57:12 
摘要:Eclipse中怎么新建项目?Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。一些刚接触Java的朋友可能对于Eclipse比较陌生,不清楚如何新建项目,对此这篇就给大家分享一下方法和操作,需要的朋友可以参考。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部