¿Hay alguna manera de hacer que todas las variables sean globales?Hacer todas las variables globales, PHP
Respuesta
No importa lo que trates de hacer, pero esta es una mala manera de hacerlo. Sería mucho mejor simplemente pasar variables como argumentos a funciones o declararlas globales allí.
pero, en resumen, no hay una manera simple de hacerlo sin muchas declaraciones globales.
manera rápida y sucia:
$GLOBALS += get_defined_vars();
no sé si este truco es portátil (funciona en PHP 5.3.1) y sospecho que los objetos se clonan.
El objeto no debe clonarse , pero no funciona con aliasing. Pero diría que es bastante cercano, y otras cosas tienen más sobrecarga: http://stackoverflow.com/a/10980563/367456 (Se agregó la respuesta por razones de exhaustividad) – hakre
creo que esto puede ayudar a foreach($GLOBALS as $name => $value) global $$name;
ponerlo dentro de la función y tendrás todas las variables visibles definidas
Para importar todas las variables globales incl. superglobales y se enfrentaron nombres de parámetros en el ámbito funciones:
extract($GLOBALS, EXTR_REFS | EXTR_SKIP);
El problema es con el superglobals aquí. Es posible que desee excluirlos, aquí hay una lista (PHP 5.2):
/**
* PHP Superglobals
*/
array (
1 => 'GLOBALS',
2 => '_ENV',
3 => 'HTTP_ENV_VARS',
4 => '_POST',
5 => 'HTTP_POST_VARS',
6 => '_GET',
7 => 'HTTP_GET_VARS',
8 => '_COOKIE',
9 => 'HTTP_COOKIE_VARS',
10 => '_SERVER',
11 => 'HTTP_SERVER_VARS',
12 => '_FILES',
13 => 'HTTP_POST_FILES',
14 => '_REQUEST',
15 => 'HTTP_SESSION_VARS',
16 => '_SESSION',
)
Usted recibe los nombres de variables con el parámetro get_defined_vars
.
Esa es también la razón por la que lo opuesto es menos complicado, get_defined_vars
no devuelve los superglobales, solo las variables locales.
El global
crea una referencia a la variable del ámbito global, por lo que en realidad es una variable local que es un alias de la variable global con el mismo nombre. También algunos VARs locales están chocando a exportar, por lo que algunos pre-precauciones como nombres de variables esotéricos deben tomarse:
foreach(get_defined_vars() as ${"\x00\x00"} => ${"\x00\x01"})
{
$GLOBALS[${"\x00\x00"}] =&$${"\x00\x00"};
}
Tenga en cuenta que les gusta globals
la $GLOBALS
gama superglobal contiene referencias a las variables globales, así que esto crea referencias aquí también. Esto es especialmente necesario si importa a través de global
o &$GLOBALS[...]
o extract
como se indica arriba. O si tiene variables locales que son alias de los miembros de la clase privada (no hagas eso;)):
Ejemplo/Demo:
<?php
/**
* Make all variables global, PHP
* @link http://stackoverflow.com/q/1909647/367456
*/
error_reporting(~0);
function bar($goo = 1)
{
global $foo;
$foo++;
$baz = 3;
foreach(get_defined_vars() as ${"\x00\x00"} => ${"\x00\x01"})
{
$GLOBALS[${"\x00\x00"}] =&$${"\x00\x00"};
}
}
$foo = 1;
bar();
echo '$goo: ', var_dump($goo); # int(1)
echo '$foo: ', var_dump($foo); # int(2)
echo '$baz: ', var_dump($baz); # int(3)
Eres un valiente valiente ;-) +1 – PeeHaa
Usted Puede sencilla a hacer una referencia a $ GLOBALS
foreach($GLOBALS as $k => $v)
$$k=&$GLOBALS[$k];
Explicación del código:
$ GLOBLAS es una VA superglobal riable (visible en todas partes).Básicamente, que contiene todas las variables
$$ significa que la variable con el nombre del valor de la variable que escribió
poco raro de explicar en un idioma extranjero así que aquí está un ejemplo:
$color='blue';
$blue='foo';
echo $$color;
es la salida
foo
$k=& $v;
significa que $ k es una referencia a $ v
Esto no es realmente una buena práctica para hacer todas las variables globales con respecto a la seguridad. Para agregar variables como globales, deberá agregar la palabra clave GLOBAL cada vez que vaya a acceder. El enfoque alternativo es el uso de la matriz $ GLOBAL.
- 1. Haciendo todas las variables globales
- 2. Imprimir todas las variables globales/variables locales?
- 3. ¿Es posible enumerar todas las variables globales en PHP?
- 4. Obtención de todas las variables globales (javascript) en una página
- 5. PHP necesita recortar todas las variables $ _POST
- 6. ¿La función php "header()" desarma las variables globales?
- 7. ¿Las variables de instancia son las nuevas variables globales?
- 8. C# - Winforms - Variables globales
- 9. Variables globales y MPI
- 10. objetivo-c - variables globales
- 11. variables globales en RequireJS
- 12. Variables globales en hadoop
- 13. Confusión sobre las variables globales en python
- 14. ASP.NET C# Las variables estáticas son globales?
- 15. Cómo capturar todas las variables en una publicación (PHP)
- 16. Django, variables de plantilla globales
- 17. acceso todas las variables locales
- 18. ¿Cómo pasar variables globales a clases en PHP?
- 19. variables globales en C++
- 20. ¿Las variables fuera de las funciones son un tipo de variables globales?
- 21. Variables globales con GO
- 22. variables globales en php que no funcionan como se esperaba
- 23. ¿Debo usar variables globales?
- 24. Compartir variables entre funciones en PHP sin usar globales
- 25. PHP -cuál es la diferencia entre las variables globales y las constantes
- 26. Variables globales en R
- 27. Greasemonkey y variables globales
- 28. C++ de variables globales
- 29. Variables globales de PHP a través de los archivos
- 30. En Ruby, ¿hay alguna forma de imprimir todas las variables globales y constantes definidas/predefinidas?
Por favor, no :( –
Si no es práctico establecer una variable global en una función genérica, siempre puede utilizar la matriz $ GLOBALS (es decir, $ GLOBALS ['var_name']) – Bretticus