Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP 8.2 tidak lagi menyokong penggunaan ${} untuk memasukkan pembolehubah ke dalam rentetan

PHP 8.2 tidak lagi menyokong penggunaan ${} untuk memasukkan pembolehubah ke dalam rentetan

青灯夜游
青灯夜游ke hadapan
2022-05-11 11:33:373716semak imbas

Pada penghujung April, komuniti PHP meluluskan cadangan dengan hanya satu undian negatif Cadangan ialah dalam PHP 8.2 yang akan datang, sintaks penggunaan ${} untuk memasukkan pembolehubah dalam rentetan tidak akan disokong lagi (. ditandakan sebagai status tidak digunakan), dan sintaks itu telah dialih keluar dalam PHP 9.

"PHP

Pada masa ini PHP boleh memasukkan pembolehubah dalam rentetan dengan petikan berganda (") dan heredoc dengan cara berikut.

  • Sisipkan pembolehubah secara langsung: “$foo”

  • Tambah pendakap kerinting di luar pembolehubah: “{$foo}”

  • Tambah pendakap kerinting selepas simbol $: “${foo}”

  • mentakrifkan sintaks pembolehubah boleh ubah ( “${expr}”, bersamaan dengan (string) ${expr}

Ilija Tovilo, pembangun yang mengemukakan cadangan, percaya bahawa cara pertama dan kedua mempunyai kebaikan dan keburukan tersendiri Cara penulisan ke-3 dan ke-4 mudah dikelirukan, dan 4 mempunyai semantik yang berbeza sama sekali (pembolehubah pembolehubah). , cara memasukkan pembolehubah ke dalam rentetan ini jarang digunakan Oleh itu, RFC yang dikemukakan oleh Ilija Tovilo mencadangkan untuk menghentikan sintaks 3 dan 4 di atas dalam PHP 8.2 dan menggantikannya dalam PHP 9.0

Mengenai kesan cadangan ini, Ilija Tovilo menganalisis 1000 repositori Teratas pada Packagegist dan mendapati bahawa 3 sintaks di atas telah digunakan 267 kali, dan 4 digunakan hanya 0 kali

var_dump("${foo}");
// Deprecated: Using ${} in strings is deprecated
 
var_dump("${(foo)}");
// Deprecated: Using ${} (variable variables) in strings is deprecated
Analisis kod sumber: https:/. /gist.github.com/iluuu1994/05427dd74100af8e41ebff3d4201742c

Ilija Tovilo percaya bahawa banyak bahasa pengaturcaraan lain juga menggunakan sintaks

untuk memasukkan bash dan JavaScript dalam rentetan (dalam rentetan Template Literals). Tetapi tingkah laku mereka adalah berbeza daripada dalam PHP, sintaks ini bermaksud mentakrifkan pembolehubah boleh ubah Dalam JavaScript, ia menyokong ungkapan sewenang-wenangnya dalam bentuk PHP semasa, pilihan 3 dan 4 di atas adalah terhad dan boleh mengelirukan kepada pembangun yang menggunakan bahasa pengaturcaraan lain dengan sintaks yang serupa Pada masa hadapan Ilija Tovilo berharap untuk menyokong sintaks berikut:

Dia percaya bahawa jika ia diputuskan untuk berbuat demikian, adalah perlu untuk mengalih keluar. pilihan yang kurang berguna terlebih dahulu untuk mengelak daripada menambahkan lagi kekeliruan. Inilah yang Ilija Tovilo harapkan untuk menyerahkan Matlamat RFC ini ${foo}

Pembelajaran yang disyorkan: "

Tutorial Video PHP

"
var_dump("{$:func()}")
.

Atas ialah kandungan terperinci PHP 8.2 tidak lagi menyokong penggunaan ${} untuk memasukkan pembolehubah ke dalam rentetan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:OSC开源社区. Jika ada pelanggaran, sila hubungi admin@php.cn Padam