I’m having trouble with global variables in php. I have a $screen var set in one file, which requires another file that calls an initSession() defined in yet another file. The initSession() declares global $screen and then processes $screen further down using the value set in the very first script.
How is this possible?
To make things more confusing, if you try to set $screen again then call the initSession(), it uses the value first used once again. The following code will describe the process. Could someone have a go at explaining this?
$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'
Update:
If I declare $screen global again just before requiring the second model, $screen is updated properly for the initSession() method. Strange.
GlobalDOES NOT make the variable global. I know it’s tricky 🙂Globalsays that a local variable will be used as if it was a variable with a higher scope.E.G :
Note that global vars are rarely a good idea. You can code 99.99999% of the time without them and your code is much easier to maintain if you don’t have fuzzy scopes. Avoid
globalif you can.