paginas - PHP global o $ GLOBALES
variables globales php entre paginas (5)
¿Existe una mejor práctica / recomendación cuando quiero usar una variable declarada fuera de una función cuando se trata de usar:
global $myVar
-
$GLOBALS[''myVar'']
Gracias.
Bueno, solo debes usar globales en circunstancias limitadas, pero para responder a tu pregunta:
-
global
es potencialmente marginalmente más rápido (rara vez hará una diferencia). -
$GLOBALS
(no$GLOBAL
) es más legible, porque cada vez que lo ve, sabe que está accediendo / cambiando una variable global. Esto puede ser crucial para evitar errores desagradables. - Dentro de una función, si desea desarmar una variable global, debe usar
unset($GLOBALS[''varname''])
, noglobal $varname; unset($varname);
global $varname; unset($varname);
.
En cuanto a los puntos 1 y 2, quote Sara Golemon aquí:
¿Qué significa eso para su uso de la matriz
$GLOBALS
? Así es, la palabra claveglobal
es técnicamente más rápida. Ahora, quiero ser muy claro acerca de una cosa aquí. La menor velocidad permitida dada al usar sus globales como [variables compiladas] necesita ser seriamente comparada con la capacidad de mantenimiento de mirar su código en cinco años y sabiendo que$foo
proviene del alcance global.something_using($GLOBALS[''foo'']);
SIEMPRE será más claro para usted en la línea queglobal $foo; /* buncha code */ something_using($foo);
global $foo; /* buncha code */ something_using($foo);
No seas centavo y machaca tonto ...
Lo que realmente debería hacer es pasar la variable a la función en lugar de usar un global en absoluto.
Un ejemplo de cómo cambiar una variable fuera de la función pasándola como parámetro de referencia:
function myFunc(&$myVar)
{
$myVar = 10;
}
$foo = 0;
myFunc($foo);
var_dump($foo); // yields 10
Yo diría que se recomienda no usar Globals en OOP, siempre debería haber una mejor manera
Yo iría por global en la parte superior de su función. De esta forma, puedes ver fácilmente qué elementos globales se usan.
global $var;
es equivalente a $var =& $GLOBALS[''var'']
.
Algunas personas sugirieron que es más rápido que usar $GLOBALS
, sin embargo, no es necesariamente el caso. Si usa la variable solo una vez, $GLOBALS
será más rápido, porque no perderá tiempo para la asignación.
Sin embargo, si usa la variable varias veces, usar global
(o la asignación equivalente) es más rápido, porque busca la matriz para la tecla var
solo una vez.
Eso es todo acerca de la velocidad. Sin embargo, la diferencia de velocidad es realmente pequeña, y la legibilidad es más importante. Sin embargo, diferentes personas tienen diferentes preferencias sobre la legibilidad: prefiero global
, algunas otras personas que responden aquí prefieren $GLOBALS
, por lo que depende de ti decidir qué se ve mejor.