首頁 > 後端開發 > PHP8 > PHP 8.2 不再支援字串中用${}插入變數了

PHP 8.2 不再支援字串中用${}插入變數了

發布: 2023-02-17 12:40:01
轉載
3788 人瀏覽過

PHP 社群4 月底通過了一項只有一張反對票的提案,提案內容是在即將發布的PHP 8.2 中,不再支援使用 ${} 在字串中插入變數的語法(標記為棄用狀態),並在PHP 9 刪除該語法。

"PHP

目前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 不再支援字串中用${}插入變數了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:OSC开源社区
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板