Tengo un código como este:
<?
$a="localhost";
function body(){
global $a;
echo $a;
}
function head(){
global $a;
echo $a;
}
function footer(){
global $a;
echo $a;
}
?>
¿Hay alguna manera de definir la variable global en un lugar y hacer que la variable sea $a
accesible en todas las funciones a la vez? sin hacer uso de global $a;
más?
php
global-variables
global
LIGERO
fuente
fuente
global
palabra clave, considere usar el$GLOBALS['a']
superglobal en todos los ámbitos, o considere pasar el parámetro a sus funciones.Respuestas:
La
$GLOBALS
matriz se puede usar en su lugar:Del manual :
Si tiene un conjunto de funciones que necesitan algunas variables comunes, una clase con propiedades puede ser una buena opción en lugar de una global:
fuente
Si la variable no va a cambiar, puede usar
define
Ejemplo:
fuente
FOOTER_CONTENT
se intenta modificar? ¿Es comofinal
en Java oconst
en C, C ++ y C #?Agregue sus variables en $ GLOBALS super global array como
y usarlo globalmente
o puede usar constantes que son accesibles en todo el script
fuente
Si una variable se declara fuera de una función, ya está en el ámbito global. Entonces no hay necesidad de declarar. Pero desde donde llama a esta variable debe tener acceso a esta variable. Si llama desde una función, debe usar la
global
palabra clave:Usar una palabra clave global fuera de una función no es un error. Si desea incluir este archivo dentro de una función, puede declarar la variable como
global
.Puedes usar
$GLOBALS
también. Es un superglobal, por lo que tiene acceso a todas partes.Dependiendo de su elección, puede elegir cualquiera.
fuente
Esta respuesta es muy tardía, pero lo que hago es establecer una clase que contenga valores booleanos, matrices y valores enteros iniciales como variables estáticas de alcance global. Cualquier cadena constante se define como tal.
Las
static
palabras clave deben estar presentes en la clase; de lo contrario, los valores $ a, $ b y $ c no tendrán alcance global.fuente
Respondiste esto en la forma en que escribiste la pregunta: usa 'definir'. pero una vez establecido, no puede cambiar una definición.
Alternativamente, hay trucos con una constante en una clase, como class :: constant que puedes usar. También puede hacerlos variables declarando propiedades estáticas a la clase, con funciones para establecer la propiedad estática si desea cambiarla.
fuente
Puede probar la palabra clave
use
en Funciones de cierre o Lambdas si se ajusta a su intención ... PHP 7.0 sin embargo. No, eso es mejor, sino solo una alternativa.demo | informacion
fuente
Pensemos un poco diferente:
Y puede usarlo y modificarlo siempre que lo desee, como:
fuente
¿Qué pasa si hace uso de la función de procedimiento en lugar de variable y los llama a cualquier lugar como usted?
Por lo general, hago una colección de valores de configuración y los pongo dentro de una función con una declaración de retorno. Solo incluyo eso donde necesito hacer uso del valor global y llamar a una función particular.
fuente
$GLOBALS[]
es la solución correcta, pero como estamos hablando de alternativas, una función también puede hacer este trabajo fácilmente:fuente
Ya no deberías usar globals, no están disponibles en PHP 5.4.
fuente