Accessibilité globale des variables PHP
Contrairement à de nombreux langages de programmation, le code PHP ne peut pas accéder directement aux variables définies en dehors des fonctions. Une idée fausse courante surgit lorsque l'on tente de récupérer des variables globales à l'intérieur d'une fonction, comme illustré dans le code suivant :
<code class="php"> $data = 'My data'; function menugen() { echo "[" . $data . "]"; } menugen();</code>
À la surprise de beaucoup, le résultat sera constitué de crochets vides ([]) au lieu du attendu "Mes données". Cet article explore le mécanisme sous-jacent à ce comportement et propose des solutions pour accéder aux variables globales dans les fonctions.
Déclaration de variable globale
PHP résout le problème en exigeant la déclaration explicite des variables globales dans la fonction où elles doivent être utilisées. Le mot-clé global sert à cet effet, comme le montre le code modifié ci-dessous :
<code class="php"> $data = 'My data'; function menugen() { global $data; // <-- Declares $data as global echo "[" . $data . "]"; } menugen();</code>
En ajoutant cette ligne, la fonction informe PHP qu'elle a l'intention d'utiliser une variable globale nommée $data. Sans cette déclaration, PHP suppose que toute variable introuvable localement est une variable locale et l'initialise comme telle. Par conséquent, la sortie devient vide.
Méthode d'accès alternative
Alternativement, les variables globales sont accessibles à l'aide du tableau $GLOBALS. Ce tableau associatif stocke toutes les variables globales avec leurs noms sous forme de clés. Bien que cette méthode permette de manipuler des variables globales, elle est généralement déconseillée en raison des risques de sécurité potentiels et de la complexité de la maintenabilité du code.
Éviter les variables globales
Dans les pratiques de programmation modernes , il est fortement recommandé d'éviter complètement d'utiliser des variables globales. Au lieu de cela, il est préférable de transmettre des données aux fonctions en tant que paramètres pour obtenir un code plus propre et plus maintenable. Dans l'exemple ci-dessus, cette approche ressemblerait à :
<code class="php"> $data = 'My data'; function menugen($data) { // <-- Parameter declared echo "[" . $data . "]"; } menugen($data); // <-- Data passed during call</code>
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!