Las variables globales en PHP no funcionan como se espera
Estoy teniendo problemas con las variables globales en PHP. tengo un$screen
var establecido en un archivo, que requiere otro archivo que llame a uninitSession()
definido en otro archivo más. losinitSession()
declaraglobal $screen
y luego procesa $ screen más abajo usando el valor establecido en el primer script.
¿Cómo es esto posible?
Para hacer las cosas más confusas, si intenta configurar $ screen nuevamente, llame alinitSession()
, utiliza el valor usado por primera vez 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"
Actualizar:
Si declaro$screen
global nuevamente antes de requerir el segundo modelo, $ screen se actualiza correctamente para elinitSession()
método. Extraño.