Maison > développement back-end > tutoriel php > Pourquoi le passage par référence du temps d'appel est-il obsolète en PHP et comment puis-je corriger l'avertissement ?

Pourquoi le passage par référence du temps d'appel est-il obsolète en PHP et comment puis-je corriger l'avertissement ?

Mary-Kate Olsen
Libérer: 2024-11-28 16:41:15
original
384 Les gens l'ont consulté

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

Dépréciation du passage par référence à l'heure d'appel en PHP

Le code fourni déclenche l'avertissement « Pass par référence à l'heure d'appel est obsolète." Cet avertissement indique que l'utilisation du passage par référence à l'heure d'appel, indiqué par l'opérateur & avant les références de variables, n'est plus prise en charge en PHP.

Call-Time Pass-by-Reference

Dans les anciennes versions de PHP, le passage par référence au moment de l'appel permettait de simuler le comportement de passage par référence lors de l'utilisation de fonctions de passage par valeur. Cela impliquait de faire précéder la référence de la variable avec & au moment de l'appel, par exemple :

not_modified(&$x);
Copier après la connexion

Cela permettait de modifier la variable référencée par $x dans la fonction.

Dépréciation

Le passage par référence au moment de l'appel est obsolète dans les versions ultérieures de PHP et ne doit pas être utilisé. Au lieu de cela, les variables doivent être explicitement transmises par référence en utilisant &, par exemple :

modified($x);
Copier après la connexion

Objets et passage par référence

Dans les anciennes versions de PHP, les objets requis passage par référence lorsqu'il est modifié dans les fonctions. Cependant, cela n'est plus nécessaire dans les versions PHP modernes car les objets sont toujours passés par référence par défaut. Par conséquent, l'utilisation de &$this dans le code fourni est redondante.

Solution

Pour résoudre l'avertissement, supprimez toutes les instances de & du code fourni. Voici le code mis à jour :

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;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal