variable una pagina otro otra llamar incluir include_once funcion desde conexion carpeta archivo php variables include scope global

una - llamar funcion php desde otro php



Pasar una variable de un archivo php incluye archivo a otro: global vs. no (4)

Estoy tratando de pasar una variable de un archivo de inclusión a otro. Esto NO funciona a menos que declare la variable como global en el segundo archivo de inclusión. Sin embargo, NO necesito declararlo como global en el archivo que está llamando al primer include. Por ejemplo:

front.inc:

$name = ''james'';

index.php:

include(''front.inc''); echo $name; include(''end.inc'');

salida: james

end.inc:

echo $name;

salida: nada

SI declaro $ nombre global antes de hacer eco de $ name en end.inc, entonces funciona correctamente. La respuesta aceptada a esta publicación explica que esto depende de la configuración de tu servidor: Pasar variables en PHP de un archivo a otro

Estoy usando un servidor Apache. ¿Cómo lo configuraría para que no sea necesario declarar $ name para ser global? ¿Hay ventajas / desventajas para uno frente al otro?


Al incluir archivos en PHP, actúa como si el código existiera dentro del archivo desde el que se están incluyendo. Imagine copiar y pegar el código desde cada uno de sus archivos incluidos directamente en su index.php . Así es como funciona PHP con includes.

Entonces, en su ejemplo, como ha establecido una variable llamada $name en su archivo front.inc , y luego incluyó tanto front.inc como end.inc en su index.php , podrá hacer echo la variable $name en cualquier lugar después del include de front.inc dentro de su index.php . De nuevo, PHP procesa su index.php como si el código de los dos archivos que usted incluye es parte del archivo.

Cuando coloca un echo dentro de un archivo incluido, en una variable que no está definida dentro de sí misma, no obtendrá un resultado porque se trata por separado y luego por cualquier otro archivo incluido.

En otras palabras, para hacer el comportamiento que está esperando, tendrá que definirlo como global.


Aquí hay una trampa para evitar. En caso de que necesite acceder a su variable $ name dentro de una función, debe decir "global $ name;" al comienzo de esa función. Necesita repetir esto para cada función en el mismo archivo.

include(''front.inc''); global $name; function foo() { echo $name; } function bar() { echo $name; } foo(); bar();

solo mostrará errores. La forma correcta de hacerlo sería:

include(''front.inc''); function foo() { global $name; echo $name; } function bar() { global $name; echo $name; } foo(); bar();


Esto es todo lo que tienes que hacer:

En frente.inc

global $name; $name = ''james'';


Tengo una solución extraña para eso. en el archivo end.inc , agregue esta línea:

$name=$name;

Entonces el eco funcionaría.

Entré a esta solución en mi proyecto, sin una buena explicación de por qué funcionó así.