У меня возникают проблемы с глобальными переменными в php. У меня есть параметр $screen
var в одном файле, для которого требуется другой файл, который вызывает initSession()
, определенный в еще одном файле. initSession()
объявляет global $screen
, а затем обрабатывает $screen дальше вниз, используя значение, установленное в самом первом script.
Как это возможно?
Чтобы сделать вещи более запутанными, если вы попытаетесь снова установить $screen, тогда вызовите initSession()
, он использует значение, впервые использованное еще раз. Следующий код описывает процесс. Кто-нибудь может объяснить это?
$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"
Обновление:
Если я объявляю $screen
global снова перед тем, как требовать вторую модель, $screen правильно обновляется для метода initSession()
. Странно.