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
672 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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan