J'ai des problèmes avec les variables globales en php. J'ai un $screen
var dans un fichier, ce qui nécessite un autre fichier qui appelle un initSession()
défini dans un autre fichier. Le initSession()
déclare global $screen
puis traite $ screen plus bas en utilisant la valeur définie dans le tout premier script.variables globales dans php ne fonctionne pas comme prévu
Comment est-ce possible?
Pour rendre les choses plus confuses, si vous essayez de définir à nouveau $ screen, appelez le initSession()
, il utilise la valeur d'abord utilisée à nouveau. Le code suivant décrira le processus. Quelqu'un pourrait-il essayer d'expliquer cela?
$screen = "list1.inc"; // From model.php
require "controller.php"; // From model.php
initSession(); // From controller.php
global $screen; // From Include.Session.inc
echo $screen; // prints "list1.inc" // From anywhere
$screen = "delete1.inc"; // From model2.php
require "controller2.php"
initSession();
global $screen;
echo $screen; // prints "list1.inc"
Mise à jour:
Si je déclare à nouveau juste avant $screen
mondiale nécessitant le second modèle, l'écran $ est correctement mis à jour pour la méthode initSession()
. Étrange.
'global $ a;' est équivalent à '$ a = & $ GLOBALS ['a'];'. Autrement dit, il crée une référence dans la portée locale avec le même nom. En dehors d'une fonction, vous êtes toujours dans une portée globale. PHP ne fournit pas de "portée de fichier". – Matthew