Impossible d'accéder à la variable globale à l'intérieur de la fonction : solutions et explications
Lorsque vous travaillez avec PHP, vous pouvez rencontrer des situations où vous devez accéder une variable globale à partir d’une fonction. Cependant, si vous n’y parvenez pas, cela peut être frustrant. Cet article fournit des solutions à ce problème ainsi qu'une explication complète.
L'extrait de code ci-dessous illustre un problème courant auquel vous pouvez être confronté :
$sxml = new SimpleXMLElement('<somexml/>'); function foo(){ $child = $sxml->addChild('child'); } foo();
Dans ce code, vous tentez d'accéder au Variable $sxml dans la fonction foo(). Cependant, comme $sxml est défini en dehors de la fonction, il est considéré comme une variable globale et n'est pas directement accessible dans foo().
Pour résoudre ce problème, vous disposez de plusieurs options :
1. Passer la variable en argument :
Vous pouvez passer la variable $sxml en argument à la fonction foo() :
$sxml = new SimpleXMLElement('<somexml/>'); function foo($sxml){ $child = $sxml->addChild('child'); } foo($sxml);
Cette approche vous permet d'accéder au $ sxml directement dans foo().
2. Déclarez la variable comme globale :
Vous pouvez déclarer la variable $sxml comme globale dans la fonction foo() :
$sxml = new SimpleXMLElement('<somexml/>'); function foo(){ global $sxml; $child = $sxml->addChild('child'); } foo();
Cette méthode nécessite que le mot-clé global soit utilisé avant le nom de la variable, et cela fonctionne car il ajoute la variable $sxml à la portée globale, la rendant accessible dans foo().
3. Utiliser des fermetures :
Vous pouvez créer une fermeture en déclarant la variable dans une clause d'utilisation. Cette approche fonctionne même si la variable est définie dans une fonction externe :
function bar(){ $sxml = new SimpleXMLElement('<somexml/>'); function foo() use (&$sxml){ $child = $sxml->addChild('child'); } foo(); } bar();
En utilisant la clause use, vous créez une fermeture qui conserve l'accès à la variable $sxml depuis la fonction externe.
Ces solutions vous permettent d'accéder efficacement aux variables globales à l'intérieur des fonctions. Le choix de la meilleure approche dépend des exigences spécifiques de votre code et des problèmes de performances.
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!