Heim > Backend-Entwicklung > PHP-Tutorial > Warum ist Call-Time Pass-by-Reference in PHP veraltet und wie kann ich die Warnung beheben?

Warum ist Call-Time Pass-by-Reference in PHP veraltet und wie kann ich die Warnung beheben?

Mary-Kate Olsen
Freigeben: 2024-11-28 16:41:15
Original
307 Leute haben es durchsucht

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

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage