Область действия переменной в PHP 7

Область действия переменной в PHP 7.

Если вы не используете функции, любая созданная вами переменная может использоваться в любом месте страницы. Когда у вас есть функции, это не всегда так. Функции хранят собственные наборы переменных, которые отличаются от тех, которые используются на странице и в других функциях.

Переменные, определенные в функции, включая ее параметры, недоступны за пределами функции и, по умолчанию, переменные, определенные за пределами функции, недоступны внутри функции. Мы уже говорили об этом ранее и следующий пример иллюстрирует это:

$а = 3;
function foo()
{
$а+= 2;
}
foo();
echo $а;

Переменная $а объявлена внутри функции foo() отличается от переменной $а, объявленной за пределами функции. Даже если foo() использует оператор добавить и присвоить, значение внешней переменной $а останется 3 на протяжении всей жизни страницы. Внутри функции у переменной $а будет значение 2.

Как было показано в главе 2, степень видимости переменной в программе, называют областью видимости переменной. Переменные, создаваемые в функции, видимы только внутри функции. Переменные, созданные за пределами функций и объектов, имеют глобальную область видимости и существуют везде за пределами этих функций и объектов. В РНР существует несколько предопределенных переменных, обладающих и областью видимости уровня функции, и глобальной областью (они часто называются супер-глобальными переменными). На первый взгляд, даже опытный программист может подумать, что в предыдущем примере $а будет равна 5 при достижении оператора echo, поэтому помните об этом, когда выбираете имена для ваших переменных.

Глобальные переменные

Если вы хотите использовать глобальные переменные в ваших функциях, вы можете использовать ключевое слово global. Синтаксис следующий:

global var 1, var2,…
$а = 3;
function foo()
{
global $а;
$а+= 2;
}
foo();
echo $а;

Вместо создания новой переменной с именем $а и областью уровня функции, РНР использует глобальную переменную $а в этой функции. Теперь, когда новое значение $а отображено, мы увидим 5.

Вы должны использовать ключевое слово glabal перед первым использованием глобальной переменной или глобальных переменных, к которым вы хотите получить доступ. Поскольку они определены до тела функции, параметры функции никогда не будут глобальными переменными.

Использование global эквивалентно созданию ссылки на переменную в переменной $GLOBALS. Другими словами оба следующих объявления создают переменную с областью видимости уровня функции, которая является ссылкой на то же значение глобальной переменной $var:

global $var;

$var = $GLOBALS[‘var’];

К слову, если вы решили заняться изучением PHP 7 для реализации проектов интернет-коммерции — стоит обратить внимание на полезные фреймворки php framework for ecommerce, которые облегчат выполнения поставленных задач.

Статические переменные

Подобно С, язык РНР поддерживает статические переменные функций. Значение статической переменной сохраняется между всеми вызовами функции, а ее инициализация происходит только при первом вызове функции. Короче говоря, все вызовы функции работают только с одной и той же областью памяти, в которой хранится значение статической переменной (в случае с обычной переменной каждый раз под нее выделяется новая память, то есть переменная инициализируется при каждом вызове функции).

Для объявления статической переменной используется ключевое слово static. Обычно при первом использовании статической переменной ей присваивается начальное значение:

static var [= value][,…];

В примере переменная $count увеличивается при каждом вызове функции.

Пример: статическая переменная-счетчик

function counter ()
{
static $count = О;
return $count++;
}
for ($i = 1; $i <= 5; $i++)
{
print counter ();
}

Когда функция вызывается в первый раз, переменной $count присваивается значение 0. Это значение возвращается, и переменная $count увеличивается. Когда функция завершает свою работу, переменная $count не уничтожается подобно нестатическим переменным, а ее значение остается таким же до следующего вызова переменной counter (). Цикл for отображает числа от 0 до 4.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *