zmienne globalne w php nie działają zgodnie z oczekiwaniami

Mam problemy ze zmiennymi globalnymi w php. mam$screen var ustawiony w jednym pliku, który wymaga innego pliku, który wywołujeinitSession() zdefiniowany w jeszcze innym pliku. TheinitSession() deklarujeglobal $screen a następnie przetwarza $ ekran dalej, używając wartości ustawionej w pierwszym skrypcie.

Jak to jest możliwe?

Aby uczynić rzeczy bardziej mylącymi, jeśli spróbujesz ponownie ustawić ekran $, zadzwoń doinitSession(), używa ponownie raz użytej wartości. Poniższy kod opisuje proces. Czy ktoś mógłby to wyjaśnić?

$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" 

Aktualizacja:
Jeśli zadeklaruję$screen ponownie globalny tuż przed wymaganiem drugiego modelu, ekran $ jest odpowiednio aktualizowany dlainitSession() metoda. Dziwne.

questionAnswers(7)

yourAnswerToTheQuestion