¿Por qué establecer la variable superglobal $GLOBALS['foo'] no funciona?
Frecuentes
Visto 404 equipos
1
El siguiente código produce una advertencia:
<?php
$GLOBALS['foo'] = "Example content<BR><BR>";
echo $foo; // that works!
Test();
function Test()
{
echo $foo; // that doesn't work!
}
?>
La advertencia es:
Notice: Undefined variable: foo
Cómo ?
3 Respuestas
4
Dentro de la función, $foo
está fuera del alcance a menos que lo llame como $GLOBALS['foo']
vea la sección global $foo
. Definiendo un global con $GLOBALS
, aunque mejora la legibilidad, no reserva automáticamente el nombre de la variable para su uso en todos los ámbitos. Todavía necesita llamar explícitamente a la variable global dentro de los ámbitos inferiores para hacer uso de ella.
function Test()
{
echo $GLOBALS['foo'];
// Or less clear, use the global keyword
global $foo;
echo $foo;
}
Incluso es posible tener un local y un global $foo
en la misma función (aunque no del todo recomendable):
$GLOBALS['foo'] = "foo! :)";
function getFoo()
{
$foo = "boo :(";
echo $GLOBALS['foo'] . "\n"; // Global $foo
echo $foo; // Local scope $foo since it has no global keyword
}
getFoo();
// foo! :)
// boo :(
Lea las Documentación de PHP sobre alcance variable y $GLOBALS
documentación para mas ejemplos
Respondido 31 Jul 12, 13:07
2
Deberá referirse a él a través de la matriz $GLOBALS todo el tiempo. Leer acerca de Alcance variable para obtener la respuesta descriptva completa.
<?php
$GLOBALS['foo'] = "Example content<BR><BR>";
echo $foo; // that works!
Test();
function Test()
{
echo $GLOBALS['foo']; // that doesn't work!
}
?>
Respondido 31 Jul 12, 13:07
1
Puedes cambiar tu código a:
function Test() {
global $foo;
echo $GLOBALS['foo'];
echo $foo;
}
debe declarar a qué variables globales accede desde su función PHP. Ver: http://php.net/manual/en/language.variables.scope.php
Respondido 31 Jul 12, 13:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php scope superglobals or haz tu propia pregunta.