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.
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
Ilija Tovilo percaya bahawa banyak bahasa pengaturcaraan lain juga menggunakan sintaksuntuk 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}
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!