PHP 커뮤니티는 4월 말 단 한 번의 반대 투표로 제안을 통과시켰습니다. 제안 내용은 곧 출시될 PHP 8.2에서는 ${}를 사용하여 문자열에 변수를 삽입하는 구문이 더 이상 지원되지 않는다는 것입니다( 더 이상 사용되지 않음)으로 표시되었으며 이 구문은 PHP 9에서 제거되었습니다.
현재 PHP는 다음과 같은 방법으로 큰따옴표("
)와 heredoc를 사용하여 문자열에 변수를 삽입할 수 있습니다. "
) 和 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}
">
- 변수 외부에 중괄호 추가:
"{$foo}"
-
$
기호 뒤에 중괄호 추가: “${foo}”
- 변경 가능한 변수 구문 정의(“${expr}”,
(string) ${expr}
var_dump("{$:func()}")🎜 이 제안의 영향과 관련하여 Ilija Tovilo는 상위 1000개 저장소에 대한 Packagegist 분석에 다음과 같이 언급했습니다. 위의 3가지 구문은 267번 사용되었고, 4번은 0번만 사용되었습니다. 🎜
🎜소스 코드 분석: https://gist.github.com/iluuu1994/05427dd74100af8e41ebff3d4201742c🎜🎜Ilija Tovilo는 믿습니다. 다른 많은 프로그래밍 언어도 bash 및 JavaScript(템플릿 리터럴)와 같은 문자열에 변수를 삽입하기 위해
${foo}
구문을 사용하지만 템플릿 리터럴과 동일하게 동작합니다. PHP에서 이 구문은 가변 변수를 정의하는 것을 의미합니다. JavaScript에서는 임의의 표현식을 지원합니다. PHP의 현재 형식에서는 위의 옵션 3과 4가 제한적으로 사용되며 다른 목적으로는 유용하지 않습니다. 유사한 구문을 사용하면 두 동작이 완전히 다르기 때문에 혼란스럽습니다. 🎜🎜향후 Ilija Tovilo는 다음 구문을 지원하기를 희망합니다. 🎜rrreee🎜 그는 이 작업을 수행하기로 결정한 경우 먼저 덜 구체적인 구문을 제거해야 한다고 믿습니다. 추가 혼란을 피하기 위한 유용한 옵션입니다. 이것이 바로 Ilija Tovilo가 RFC를 제출하여 달성하고자 하는 것입니다. 🎜🎜추천 학습: "🎜PHP 비디오 튜토리얼🎜"🎜위 내용은 PHP 8.2는 더 이상 ${}를 사용하여 문자열에 변수를 삽입하는 것을 지원하지 않습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!