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
Mary-Kate OlsenOriginal
2024-11-28 16:41:15305Durchsuche

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);

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!

Stellungnahme:
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