2012-04-25 13 views
7

Como sabemos, la palabra clave global hace variable (o un objeto, matriz) visible en el interior función actual que estamos tratando conpalabra clave mundial fuera de la función en php

<?php 

$some_var = 'some string'; 

function __test(){ 
    global $some_var; 
    echo $some_var; // some string 
} 

Pero de alguna dev todavía usamos la palabra clave mundial fuera de las funciones a primera vista, no tiene ningún sentido para mí.

Bueno, la pregunta es: ¿Tiene algún sentido utilizar palabra clave 'global' fuera de la función ???

+0

¿Está seguro del alcance que se está utilizando? –

+0

Vi incluso en el archivo index.php, "global $ some_var" - realmente nunca estará dentro de ninguna función. Estoy seguro del alcance – Yang

+0

@metal_fan Sospecho que vio las agallas de una función en un archivo separado. – Sampson

Respuesta

7

Desde el docs:

El uso de palabras clave mundial fuera de una función no es un error. Se puede usar si el archivo está incluido desde dentro de una función.

Esencialmente podría tener sus tripas de funciones en un archivo diferente al de su declaración de función. Estas tripas se incluirían en la función. Esto daría la impresión, si ve las entrañas solo, de un usuario que usa global fuera de una función, sin embargo, el hecho es que cuando se interpreta este código, se interpretará desde dentro de una función.

$name = "Jonathan"; 

function doSomething() { 
    include('functionGuts.php'); 
} 

Donde los contenidos de nuestro archivo functionGuts.php podrían ser:

global $name; 
echo "Hello, " . $name; 

Cuando se ve por sí mismo, functionGuts.php dará la impresión de que global se está utilizando fuera de una función, cuando en realidad se está usado así:

$name = "Jonathan"; 

function doSomething() { 
    global $name; 
    echo "Hello, " . $name; 
} 
0

La palabra clave global fuera de funciones no hace absolutamente nada. pero ese archivo puede estar incluido dentro de una función.

Otra cosa que uso no es hacer mis códigos legibles y más estructurados. cualquier variable a la que quiera acceder ac usando la palabra clave global en una función, la declaro usando global en el archivo principal, así que solo un vistazo rápido y sé que se hace referencia en alguna parte como global. (es decir, no cambie el nombre de todos modos ya que el otro se usa en otro lugar ... :))

Cuestiones relacionadas