web-dev-qa-db-fra.com

Comment définir des variables globales dans une page de modèle?

Je sais que ça marche.
Dans functions.php faire:

$variable = "value";

et en header.php, utilisez:

global $variable;
echo $variable;

Est-il possible de définir une variable globale dans une page de modèle ou d'inclure un fichier php?

2
Jows

N'importe où dans votre script, vous pouvez définir une variable globale comme suit:

Utilisation du tableau superglobal $GLOBALS. Ce tableau est prédéfini par PHP et est disponible dans toutes les portées.

C'est un tableau associé, contenant toutes les variables globales sous forme d'une paire clé-valeur. c'est-à-dire que la clé sera le nom de la variable et que la valeur sera la valeur de la variable.

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

Et on peut y accéder en tant que:

$variable = $GLOBALS['variablename'];

ou

global $variable;

en savoir plus ref: PHP Portée variable

EDIT: Tout en répondant, je suppose que l'utilisateur connaissait la méthode 2, mais en relisant, il semble qu'il ne l'ait peut-être pas, alors je le mentionne plus bas.

Méthode 2:

vous pouvez également définir une variable globale à l'aide du mot clé "global". par exemple code:

//fichier1.php

class testScope()
{
   function setMsg($msg = 'Hi')
  {
    //the variable need not be already defined in the global scope. 
   global $say;
   $say = 'Hi';
  }

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

//file2.php 

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

getFile1();

$sayer = new testScope();

$sayer->setMsg(); // this will create a new global variable. 
$sayer->say();
global $say; 
echo $say; 

$say = "I changed it in global scope";

$sayer->say(); // 'I changed it in global scope'

$sayer->set('i changed it inside class');
echo $say; // ' i changed it inside class'

Remarque: le code n'est pas testé

7
MortalViews