2012-04-22 10 views

Respuesta

2

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;

+2

Gracias por la explicación contra clase: var, pero para este contexto me preocupa la variable declarada estática en una función –

1

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(); 
} 
+0

lo que quiere decir, global se puede cambiar en cualquier momento, pero es una especie de estática constante ?? –

+1

@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

Cuestiones relacionadas