2011-06-05 21 views

Respuesta

7

Sí. Se puede acceder desde cualquier ubicación, incluidos otros scripts. Son ligeramente mejor, ya que tiene que utilizar la palabra clave global para acceder a ellos desde dentro de una función, lo que le da más claridad sobre de dónde vienen y qué hacen.

The disadvantages of global variables apply, pero esto no los convierte instantáneamente en malvados como se percibe a menudo en algunos lenguajes OO. Si producen una buena solución que sea eficiente y fácilmente comprensible, entonces estás bien. Hay literalmente millones de proyectos exitosos de PHP que usan variables globales declaradas de esta manera. El error más grande que puede cometer es no utilizarlos y hacer que su código sea aún más complicado cuando hubiera estado perfectamente bien usarlos en primer lugar. : D

4
<?php 

$foo = 1; 

function meh(){ 
    global $foo; 
    // <-- $foo now can be accessed 
} 

?> 
2

fuera de la función es sorta como ámbito global (en comparación con los lenguajes de programación como C), pero hay que hacer una cosa para permitir el acceso a la var dentro de una función:

function meh(){ 
    global $foo; 
    // $foo now exists in this scope 
} 
2

En su ejemplo $foo se crea como variable en el ámbito global. (A menos que su script mostrado sea included() desde otro ámbito de funciones/métodos)

PHP no tiene variables globales reales. Debe alias manualmente usando la instrucción global $foo; para acceder a ellas. (También el consejo "todo lo global es malo" es solo eso, mal consejo.)

2

Si entiendo su pregunta correctamente, realmente no debería haber un problema. A menos que declare una variable como global, se limitará al ámbito en el que se declara, en este caso sea cual sea el archivo php en el que esté definido el código anterior. Podría declarar otra variable $ foo en meh() y sería independiente del $ foo definido afuera.

7

Todas las variables definidas fuera de cualquier función se declaran en el alcance global. Si desea acceder a una variable global tiene dos opciones:

  1. utilizar la palabra clave mundial

    <?php 
    $a = 1; 
    $b = 2; 
    
    function Sum() 
    { 
        global $a, $b; 
    
        $b = $a + $b; 
    } 
    ?> 
    
  2. o utilizar el $ GLOBALS

    <?php 
    $a = 1; 
    $b = 2; 
    
    function Sum() 
    { 
        $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; 
    } 
    ?> 
    

    Leer más en http://php.net/manual/en/language.variables.scope.php

Cuestiones relacionadas