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; }
Pertimbangan Tambahan:
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!