Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Menggantikan `create_function()` PHP yang Dihentikan dalam PHP 7.2 dan Kemudian?

Bagaimanakah Saya Boleh Menggantikan `create_function()` PHP yang Dihentikan dalam PHP 7.2 dan Kemudian?

Barbara Streisand
Lepaskan: 2024-12-21 21:01:22
asal
786 orang telah melayarinya

How Can I Replace PHP's Deprecated `create_function()` in PHP 7.2 and Later?

PHP 7.2 Menamatkan fungsi create_(): Pandangan Lebih Dekat

Dalam PHP 7.2, penciptaan fungsi secara dinamik melalui create_function( ) fungsi telah ditamatkan. Ini menimbulkan cabaran bagi pembangun yang telah bergantung pada ciri ini dalam aplikasi mereka. Untuk menangani perkara ini, mari kita terokai penyelesaian yang menawarkan alternatif moden dan serasi.

Pertimbangkan coretan kod berikut:

$callbacks[$delimiter] = create_function(
    '$matches',
    "return '$delimiter' . strtolower($matches[1]);"
);
Salin selepas log masuk

Di sini, create_function() mencipta secara dinamik fungsi berdasarkan rentetan yang disediakan. Walau bagaimanapun, dalam PHP 7.2 dan kemudian, pendekatan ini tidak lagi disyorkan.

Alternatif: Fungsi Tanpa Nama (Penutupan)

Untuk menulis semula kod untuk keserasian PHP 7.2, anda boleh menggunakan Fungsi Tanpa Nama, juga dikenali sebagai Penutupan. Penutupan ialah fungsi tanpa nama yang boleh ditakrifkan dan digunakan dalam kod anda. Ia membenarkan anda mengakses pembolehubah daripada skop induk, menjadikannya sesuai untuk tugas yang sedang dijalankan.

Kod berikut menunjukkan cara menulis semula coretan asal menggunakan Penutupan:

$callbacks[$delimiter] = function($matches) use ($delimiter) {
    return $delimiter . strtolower($matches[1]);
};
Salin selepas log masuk

Dalam Penutupan ini:

  • fungsi($matches): Mentakrifkan fungsi parameter, yang diterima sebagai tatasusunan yang mewakili padanan daripada ungkapan biasa.
  • use ($delimiter):** Mengisytiharkan bahawa pembolehubah **$delimiter daripada skop induk akan tersedia dalam tempoh penutupan.
  • kembali $delimiter . strtolower($matches[1]): Mengembalikan hasil yang diingini, iaitu gabungan $delimiter dan versi huruf kecil elemen pertama yang dipadankan.

Oleh menggunakan Fungsi Tanpa Nama, anda boleh menukar kod anda dengan lancar kepada PHP 7.2 dan seterusnya, mengekalkan fungsi yang disediakan oleh create_function() sambil mematuhi piawaian PHP terkini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggantikan `create_function()` PHP yang Dihentikan dalam PHP 7.2 dan Kemudian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan