Maison > développement back-end > PHP8 > le corps du texte

PHP 8.2 ne prend plus en charge l'utilisation de ${} pour insérer des variables dans des chaînes

Libérer: 2023-02-17 12:40:01
avant
3643 Les gens l'ont consulté

La communauté PHP a adopté une proposition avec un seul vote négatif fin avril. Le contenu de la proposition est que dans le prochain PHP 8.2, la syntaxe d'utilisation de ${} pour insérer des variables dans une chaîne ne sera plus prise en charge ( marqué comme obsolète) , et cette syntaxe a été supprimée dans PHP 9.

"PHP

Actuellement, PHP peut insérer des variables dans des chaînes avec des guillemets doubles (") et heredoc des manières suivantes. ") 和 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
Copier après la connexion

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

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

Ilija Tovilo 认为,许多其他编程语言也使用 ${foo}

Ilija, le développeur qui a soumis la proposition Tovilo estime que les 1ère et 2ème méthodes ont leurs propres avantages et inconvénients. Les 3ème et 4ème méthodes d'écriture sont faciles à confondre, et la 4ème a une sémantique complètement différente (variables variables). Cette méthode est rarement utilisée pour insérer des variables dans une chaîne 🎜🎜Par conséquent. , la RFC soumise par Ilija Tovilo propose de déprécier la syntaxe de 3 et 4 ci-dessus dans PHP 8.2 et de la supprimer dans PHP 9.0 🎜
var_dump("{$:func()}")
Copier après la connexion
🎜 Concernant l'impact de cette proposition, Ilija Tovilo a commenté l'analyse Packagegist des 1000 meilleurs référentiels montre que. la syntaxe 3 ci-dessus a été utilisée 267 fois, et 4 n'a que 0 fois 🎜
🎜Analyse du code source : https://gist.github.com/iluuu1994/05427dd74100af8e41ebff3d4201742c🎜
🎜Ilija Tovilo croit. que de nombreux autres langages de programmation utilisent également la syntaxe ${foo} pour insérer des variables dans des chaînes, telles que bash et JavaScript (dans les littéraux de modèle), mais ils se comportent de la même manière que dans les littéraux de modèle différents. en PHP. En PHP, cette syntaxe signifie définir des variables mutables. En JavaScript, elle prend en charge les expressions arbitraires. Dans la forme actuelle de PHP, les options 3 et 4 ci-dessus sont d'une utilité limitée et ne sont pas utiles pour les développeurs de langages de programmation. avec une syntaxe similaire, les deux comportements sont complètement différents et donc déroutants 🎜🎜Dans le futur Ilija Tovilo espère supporter la syntaxe suivante : 🎜rrreee🎜 Il pense que si vous décidez de faire cela, il faudra d'abord supprimer le moins spécifique syntaxe. Options utiles pour éviter d’ajouter davantage de confusion. C'est ce qu'Ilija Tovilo espère réaliser en soumettant cette RFC. 🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:OSC开源社区
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!