Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Rujukan Laluan-Masa Panggilan Dihentikan dalam PHP dan Bagaimana Saya Boleh Membetulkan Amaran?

Mengapa Rujukan Laluan-Masa Panggilan Dihentikan dalam PHP dan Bagaimana Saya Boleh Membetulkan Amaran?

Mary-Kate Olsen
Lepaskan: 2024-11-28 16:41:15
asal
368 orang telah melayarinya

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

Pemberhentian Rujukan Laluan Masa Panggilan dalam PHP

Kod yang disediakan mencetuskan amaran "Rujukan pas-by-masa panggilan telah ditamatkan." Amaran ini menunjukkan bahawa penggunaan rujukan pas masa panggilan, dilambangkan oleh & operator sebelum rujukan pembolehubah, tidak lagi disokong dalam PHP.

Rujukan Laluan Masa Panggilan

Dalam versi PHP yang lebih lama, rujukan pas-demi masa panggilan membenarkan mensimulasikan tingkah laku lulus melalui rujukan apabila menggunakan nilai pas-demi- fungsi. Ini melibatkan pendahuluan rujukan pembolehubah dengan & pada masa panggilan, cth.:

not_modified(&$x);
Salin selepas log masuk

Ini membenarkan mengubah suai pembolehubah yang dirujuk oleh $x dalam fungsi.

Penangguhan

Rujukan pas masa panggilan telah ditamatkan dalam versi PHP seterusnya dan tidak boleh digunakan. Sebaliknya, pembolehubah harus diluluskan secara eksplisit melalui rujukan menggunakan &, cth.:

modified($x);
Salin selepas log masuk

Objek dan Rujukan Laluan

Dalam versi PHP yang lebih lama, objek diperlukan rujukan lewat apabila diubah suai dalam fungsi. Walau bagaimanapun, ini tidak lagi diperlukan dalam versi PHP moden kerana objek sentiasa diluluskan dengan rujukan secara lalai. Oleh itu, penggunaan &$this dalam kod yang disediakan adalah berlebihan.

Penyelesaian

Untuk menyelesaikan amaran, alih keluar semua kejadian & daripada kod yang disediakan. Berikut ialah kod yang dikemas kini:

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

Atas ialah kandungan terperinci Mengapa Rujukan Laluan-Masa Panggilan Dihentikan dalam PHP dan Bagaimana Saya Boleh Membetulkan Amaran?. 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