¿Cómo establecer variables globales en la plantilla de página?

4 jun 2014, 12:30:01
Vistas: 15K
Votos: 2

Sé que esto funciona.
En functions.php haz:

$variable = "valor";

y en header.php usa:

global $variable;
echo $variable;

¿Es posible establecer una variable global en la plantilla de página o en un archivo php incluido?

1
Comentarios

Un placer, echa un vistazo a ayuda: formato para aprender más sobre eso.

Nicolai Grossherr Nicolai Grossherr
4 jun 2014 15:25:02
Todas las respuestas a la pregunta 1
0

En cualquier parte de tu script, puedes definir una variable global de la siguiente manera:

Usando el array superglobal $GLOBALS. Este array está predefinido por PHP y está disponible en todos los ámbitos.

Es un array asociativo que contiene todas las variables globales como pares clave-valor. Es decir: la clave será el nombre de la variable y el valor será el valor de la variable.

$GLOBALS['nombrevariable'] = 'valorvariable';

Y se puede acceder a ella así:

$variable = $GLOBALS['nombrevariable'];

o

global $variable;

Para saber más, consulta: Ámbito de las Variables en PHP

EDITADO: Al responder asumí que el usuario conocía el método 2, pero al releer parece que tal vez no está al tanto, así que lo menciono a continuación.

Método 2:

Puedes definir una variable global usando también la palabra clave 'global'. Ejemplo de código:

//archivo1.php

class testScope()
{
   function setMsg($msg = 'Hola')
  {
    //la variable no necesita estar ya definida en el ámbito global.
   global $saludo;
   $saludo = 'Hola';
  }

  function say()
  {
    global $saludo;
    echo $saludo;
  } 
}

//archivo2.php

function getFile1()
{
  include('archivo1.php');
}

getFile1();

$hablador = new testScope();

$hablador->setMsg(); // esto creará una nueva variable global.
$hablador->say();
global $saludo;
echo $saludo;

$saludo = "Lo cambié en el ámbito global";

$hablador->say(); // 'Lo cambié en el ámbito global'

$hablador->set('lo cambié dentro de la clase');
echo $saludo; // 'lo cambié dentro de la clase'

Nota: El código no ha sido probado

4 jun 2014 12:38:42