¿Cuál es exactamente la diferencia entre las variables GLOBAL y STATIC en PHP? ¿Y cuál es preferible usar, cuando queremos usar una variable en múltiples funciones?¿Cuál es la diferencia entre "GLOBAL" y la variable "ESTÁTICA" en PHP?
Gracias.
¿Cuál es exactamente la diferencia entre las variables GLOBAL y STATIC en PHP? ¿Y cuál es preferible usar, cuando queremos usar una variable en múltiples funciones?¿Cuál es la diferencia entre "GLOBAL" y la variable "ESTÁTICA" en PHP?
Gracias.
Una variable estática solo implica que la var pertenece a una clase pero se puede referenciar sin tener que instanciar dicha clase. Una var global vive en el espacio de nombres global y puede ser referenciada por cualquier función en cualquier clase. Los vars globales siempre son mal vistos porque se usan mal fácilmente, se sobrescriben, se referencian accidentalmente, etc. Al menos con los vars estáticos que necesitas hacer referencia a través de Class::var;
Global se usa para obtener los vars globales que se pueden definir en otros scripts, o no en el mismo alcance.
p. Ej.
<?php
$g_var = 1;
function test() {
var_dump($GLOBAL['g_var']);
global $g_var;
var_dump($g_var);
}
Static se utiliza para definir una var que tenga toda la vida del script, e init solo una vez.
p. Ej.
<?php
function test() {
static $cnt = 0;
$cnt ++;
echo $cnt;
}
$i = 10;
while (-- $i) {
test();
}
lo que quiere decir, global se puede cambiar en cualquier momento, pero es una especie de estática constante ?? –
@Desconocido no, no me refiero a eso. estático variable se puede cambiar libremente. Pero la operación init se ejecuta solo una vez. Ver mi ejemplo, "static $ cnt = 0" solo se ejecuta una vez, luego cada vez que el func llama, la variable se agrega en uno. – wedgwood
Gracias por la explicación contra clase: var, pero para este contexto me preocupa la variable declarada estática en una función –