Cum să setezi variabile globale în pagina de șablon?

4 iun. 2014, 12:30:01
Vizualizări: 15K
Voturi: 2

Știu că această metodă funcționează.
În functions.php adaugă:

$variabila = "valoare";

iar în header.php folosește:

global $variabila;
echo $variabila;

Este posibil să setezi o variabilă globală în pagina de șablon sau într-un fișier php inclus?

1
Comentarii

Cu plăcere, aruncă o privire la ajutor: formatare pentru a afla mai multe despre asta.

Nicolai Grossherr Nicolai Grossherr
4 iun. 2014 15:25:02
Toate răspunsurile la întrebare 1
0

În orice parte a scriptului tău, poți defini o variabilă globală astfel:

Folosind tabloul superglobal $GLOBALS. Acest tablou este predefinit de PHP și este disponibil în toate domeniile de aplicare.

Este un tablou asociativ, care conține toate variabilele globale ca perechi cheie-valoare. Adică: cheia va fi numele variabilei, iar valoarea va fi valoarea variabilei.

$GLOBALS['numevariabila'] = 'valoarevariabila';

Și poate fi accesată astfel:

$variabila = $GLOBALS['numevariabila'];

sau

global $variabila;

pentru mai multe informații, consultă: Domeniul de aplicare al variabilelor în PHP

EDIT: Când am răspuns, am presupus că utilizatorul știa despre metoda 2, dar reluând citirea, se pare că poate nu este conștient de ea, așa că o menționez mai jos.

Metoda 2:

poți defini o variabilă globală folosind și cuvântul cheie 'global'. exemplu de cod:

//file1.php

class testScope()
{
   function setMsg($msg = 'Bună')
  {
    //variabila nu trebuie să fie deja definită în domeniul global. 
   global $salut;
   $salut = 'Bună';
  }

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

//file2.php 

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

getFile1();

$sayer = new testScope();

$sayer->setMsg(); // aceasta va crea o nouă variabilă globală. 
$sayer->say();
global $salut; 
echo $salut; 

$salut = "Am schimbat-o în domeniul global";

$sayer->say(); // 'Am schimbat-o în domeniul global'

$sayer->set('am schimbat-o în interiorul clasei');
echo $salut; // 'am schimbat-o în interiorul clasei'

Notă: Codul nu a fost testat

4 iun. 2014 12:38:42