Tengo problemas con las variables globales en php. Tengo un conjunto $screen
var en un archivo, que requiere otro archivo que llama a initSession()
definido en otro archivo. El initSession()
declara global $screen
y luego procesa $ pantalla más abajo utilizando el valor establecido en el primer script.variables globales en php que no funcionan como se esperaba
¿Cómo es esto posible?
Para hacer las cosas más confusas, si intenta establecer $ pantalla nuevamente y luego llama al initSession()
, usa el valor que se usó una vez más. El siguiente código describirá el proceso. ¿Podría alguien intentar explicar esto?
$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"
Actualización:
Si Declaro $screen
mundial de nuevo justo antes de requerir el segundo modelo, la pantalla se actualiza $ adecuadamente para el método initSession()
. Extraño.
'global $ a;' es equivalente a '$ a = & $ GLOBALS ['a'];'. Es decir, crea una referencia en el ámbito local con el mismo nombre. Fuera de una función, siempre estás en el alcance global. PHP no proporciona un "alcance de archivo". – Matthew