Come impostare variabili globali nella pagina template?

4 giu 2014, 12:30:01
Visualizzazioni: 15K
Voti: 2

So che questo funziona.
In functions.php fai:

$variabile = "valore";

e in header.php usa:

global $variabile;
echo $variabile;

È possibile impostare una variabile globale nella pagina template o in un file php incluso?

1
Commenti

È stato un piacere, dai un'occhiata a guida: formattazione per saperne di più su questo argomento.

Nicolai Grossherr Nicolai Grossherr
4 giu 2014 15:25:02
Tutte le risposte alla domanda 1
0

In qualsiasi punto del tuo script, puoi definire una variabile globale come segue:

Utilizzando l'array superglobale $GLOBALS. Questo array è predefinito da PHP, e è disponibile in tutti gli scope.

È un array associativo, contenente tutte le variabili globali come coppie chiave-valore. Ad esempio: la chiave sarà il nome della variabile, e il valore sarà il valore della variabile.

$GLOBALS['variablename'] = 'variablevalue';

E può essere accessibile come:

$variable = $GLOBALS['variablename'];

oppure

global $variable;

Per saperne di più, consulta: PHP Variable Scope

MODIFICA: Rispondendo ho dato per scontato che l'utente conoscesse il metodo 2, ma rileggendo sembra che forse non ne sia a conoscenza, quindi lo menziono di seguito.

Metodo 2:

Puoi definire una variabile globale anche usando la parola chiave 'global'. Esempio di codice:

//file1.php

class testScope()
{
   function setMsg($msg = 'Ciao')
  {
    //la variabile non deve essere già definita nello scope globale.
   global $say;
   $say = 'Ciao';
  }

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

//file2.php 

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

getFile1();

$sayer = new testScope();

$sayer->setMsg(); // questo creerà una nuova variabile globale.
$sayer->say();
global $say; 
echo $say; 

$say = "L'ho cambiata nello scope globale";

$sayer->say(); // 'L'ho cambiata nello scope globale'

$sayer->set('l\'ho cambiata dentro la classe');
echo $say; // 'l\'ho cambiata dentro la classe'

Nota: Il codice non è stato testato

4 giu 2014 12:38:42