Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Rujukan Pass-by-Panggilan Dihentikan dalam PHP dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Rujukan Pass-by-Panggilan Dihentikan dalam PHP dan Bagaimana Saya Boleh Membetulkannya?

Mary-Kate Olsen
Lepaskan: 2024-11-30 00:53:10
asal
576 orang telah melayarinya

Why is Call-Time Pass-by-Reference Deprecated in PHP and How Can I Fix It?

Rujukan Pass-by-Call-Time Ditamatkan: Pemahaman dan Penyelesaian

Amaran PHP "Rujukan pass-by-call-time telah ditamatkan" menunjukkan penggunaan lapuk simbol & untuk menghantar pembolehubah melalui rujukan semasa panggilan fungsi. Amalan ini telah tidak digalakkan selama bertahun-tahun dan PHP 8 telah menafikannya secara rasmi.

Punca Penamatan:

Dalam versi PHP yang lebih lama, lulus pembolehubah melalui rujukan menggunakan & simbol diperlukan untuk mengubah suai objek yang diluluskan sebagai hujah. Walau bagaimanapun, versi PHP moden secara asli menyokong objek lulus mengikut nilai tetapi berkelakuan seolah-olah ia diluluskan melalui rujukan. Ini bermakna mengubah suai objek dalam fungsi juga mengubah suai objek asal.

Penyelesaian:

Untuk menyelesaikan amaran penamatan dan memastikan keserasian kod dengan versi PHP akan datang, alih keluar simbol & daripada baris kod yang pembolehubah dihantar melalui rujukan.

Dalam kod yang anda berikan, simbol & boleh dialih keluar seperti berikut:

function XML() {
    $this->parser = xml_parser_create();
    xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
    xml_set_object($this->parser, $this);
    xml_set_element_handler($this->parser, 'open', 'close');
    xml_set_character_data_handler($this->parser, 'data');
}
function destruct() {
    xml_parser_free($this->parser);
}
function parse($data) {
    $this->document = array();
    $this->stack    = array();
    $this->parent   = &$this->document;
    return xml_parse($this->parser, $data, true) ? $this->document : NULL;
}
Salin selepas log masuk

Pertimbangan Tambahan:

  • Alih keluar semua kejadian & daripada hantaran berubah, bukan hanya di tempat amaran dijana.
  • Lepasi pembolehubah objek mengikut nilai, kerana PHP secara asli mengendalikan pengubahsuaian mereka dengan sewajarnya.
  • Kemas kini kod anda untuk mematuhi piawaian pengekodan PHP moden untuk mengelakkan amaran penamatan yang serupa pada masa hadapan.

Atas ialah kandungan terperinci Mengapa Rujukan Pass-by-Panggilan Dihentikan dalam PHP dan Bagaimana Saya Boleh Membetulkannya?. 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