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 ?
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);
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);
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; }
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!