Ich habe Probleme mit globalen Variablen in PHP. Ich habe eine $screen
Var in einer Datei, die eine andere Datei erfordert, die eine initSession()
in einer anderen Datei definiert. Die initSession()
deklariert global $screen
und verarbeitet $ Bildschirm weiter unten mit dem Wert im ersten Skript festgelegt.globale Variablen in PHP nicht wie erwartet funktioniert
Wie ist das möglich?
Um die Dinge verwirrender zu machen, wenn Sie versuchen, $ Bildschirm wieder zu setzen, dann rufen Sie die initSession()
, es verwendet den zuerst verwendeten Wert noch einmal. Der folgende Code beschreibt den Prozess. Könnte jemand das erklären?
$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:
Wenn ich erklären $screen
global wieder kurz vor dem zweiten Modell erfordert, wird $ Bildschirm richtig für die initSession()
Methode aktualisiert. Seltsam.
'global $ a;' nicht äquivalent zu $ a = & $ GLOBALS ['a']; '. Das heißt, es wird eine Referenz im lokalen Bereich mit demselben Namen erstellt. Außerhalb einer Funktion sind Sie immer im globalen Bereich. PHP bietet keinen "Dateiumfang". – Matthew