您好,欢迎访问一九零五行业门户网

PHP 8.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 希望实现的目标。
推荐学习:《php视频教程》
以上就是php 8.2 不再支持字符串中用${}插入变量了的详细内容。
其它类似信息

推荐信息