Как установить глобальные переменные в шаблонной странице?

4 июн. 2014 г., 12:30:01
Просмотры: 15K
Голосов: 2

Я знаю, что это работает.
В файле functions.php нужно сделать:

$variable = "value";

а в header.php использовать:

global $variable;
echo $variable;

Возможно ли установить глобальную переменную в шаблонной странице или включаемом PHP-файле?

1
Комментарии

С удовольствием, ознакомьтесь с справкой: форматирование, чтобы узнать больше об этом.

Nicolai Grossherr Nicolai Grossherr
4 июн. 2014 г. 15:25:02
Все ответы на вопрос 1
0

В любом месте вашего скрипта вы можете определить глобальную переменную следующим образом:

Используя суперглобальный массив $GLOBALS. Этот массив предопределён в PHP и доступен во всех областях видимости.

Это ассоциативный массив, содержащий все глобальные переменные в виде пар ключ-значение. То есть: ключом будет имя переменной, а значением — значение переменной.

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

И к ней можно обратиться так:

$variable = $GLOBALS['variablename'];

или

global $variable;

Подробнее см.: Область видимости переменных в PHP

РЕДАКТИРОВАНИЕ: Отвечая, я предположил, что пользователь знает о втором методе, но при перечитывании понял, что, возможно, он о нём не знает, поэтому привожу его ниже.

Метод 2:

Вы также можете определить глобальную переменную с помощью ключевого слова 'global'.
Пример кода:

//file1.php

class testScope()
{
   function setMsg($msg = 'Привет')
  {
    //переменная не обязательно должна быть уже определена в глобальной области видимости.
   global $say;
   $say = 'Привет';
  }

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

//file2.php 

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

getFile1();

$sayer = new testScope();

$sayer->setMsg(); // это создаст новую глобальную переменную. 
$sayer->say();
global $say; 
echo $say; 

$say = "Я изменил её в глобальной области видимости";

$sayer->say(); // 'Я изменил её в глобальной области видимости'

$sayer->set('я изменил её внутри класса');
echo $say; // 'я изменил её внутри класса'

Примечание: Код не тестировался

4 июн. 2014 г. 12:38:42