Heim >Backend-Entwicklung >PHP-Tutorial >Warum ist Call-Time Pass-by-Reference in PHP veraltet und wie kann ich die Warnung beheben?
Call-Time Pass-by-Reference-Abwertung in PHP
Der bereitgestellte Code löst die Warnung „Call-Time Pass-by-Reference“ aus ist veraltet.“ Diese Warnung weist darauf hin, dass die Verwendung von Call-Time Pass-by-Reference, gekennzeichnet durch den &-Operator vor Variablenreferenzen, in PHP nicht mehr unterstützt wird.
Call-Time Pass-by-Reference
In älteren PHP-Versionen ermöglichte die Call-by-Reference die Simulation des Verhaltens der Pass-by-Reference bei Verwendung von Pass-by-Value-Funktionen. Dies beinhaltete das Voranstellen der Variablenreferenz mit & zum Zeitpunkt des Aufrufs, z. B.:
not_modified(&$x);
Dies ermöglichte das Ändern der durch $x referenzierten Variablen innerhalb der Funktion.
Veraltet
Call-Time-Pass-by-Reference ist in nachfolgenden PHP-Versionen veraltet und sollte nicht verwendet werden. Stattdessen sollten Variablen explizit per Referenz mit & übergeben werden, z. B.:
modified($x);
Objekte und Pass-by-Reference
In älteren PHP-Versionen sind Objekte erforderlich Übergabe als Referenz, wenn sie innerhalb von Funktionen geändert wird. Dies ist jedoch in modernen PHP-Versionen nicht mehr notwendig, da Objekte standardmäßig immer per Referenz übergeben werden. Daher ist die Verwendung von &$this im bereitgestellten Code überflüssig.
Lösung
Um die Warnung zu beheben, entfernen Sie alle Instanzen von & aus dem bereitgestellten Code. Das Folgende ist der aktualisierte Code:
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; }
Das obige ist der detaillierte Inhalt vonWarum ist Call-Time Pass-by-Reference in PHP veraltet und wie kann ich die Warnung beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!