logo search
Vvedenie_v_Veb_programmirovanien_2 / Vvedenie_v_Veb_programmirovanien_2

Область действия и время жизни переменных

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

$perem = 1; /* глобальная область */

function Test ()

{

echo $perem;

}

Test ();

А такая конструкция выдаст правильный результат:

function Test ()

{

$perem = 1; /* локальная область функции */

echo $perem;

}

Test ();

Чтобы глобальная переменная была доступна внутри функции, её необходимо внутри этой функции задекларировать как глобальную переменную.

<?php //pr18.php

/* глобальная область */

$a = 2;

$b = 3;

function Sum ()

{

global $a, $b; /* декларируем переменные $a и $b как глобальные */

$c = $a + $b; /* и теперь функция имеет к ним доступ */

echo $c;//5

global $myglobal;

$myglobal=0;

}

echo ($myglobal) ;//неопределенная переменная $myglobal

Sum ();

echo $myglobal; //0

?>

В PHP имеются переменные $_GET[],$_POST[],$_REQUEST[],$_COOKIE[], $_FILES[],$_SERVER[],$_ENV[],$_SESSION[], которые называются суперглобальными и которае доступны постоянно во время выполнения сценария PHP. Для доступа к переменным глобальной области в PHP используется также специальный массив $GLOBALS.

Время жизни локальной переменной – это время работы функции, в которой объявлена переменная. Для удлинения времени жизни локальной переменной используется ее объявление статической переменной. Статическая переменная существует только в локальной области функции, но не теряет своего значения после выхода из функции. Например:

Function Count ()

{

static $counter = 0; /* декларируем переменную $counter как статическую, при обращении к функции она не будет каждый раз обнуляться */

echo $counter;

$counter++; }

Count(); //количество обращений к функции