Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Rujukan Laluan-Masa Panggilan Dihentikan dalam PHP dan Bagaimana Saya Boleh Membetulkan Amaran?
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);
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);
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; }
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!