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.