Область видимости переменных в PHP
Переменные PHP могут быть объявлены в любом месте кода PHP.
Область видимости переменной — это часть скрипта, где на переменную можно ссылаться/использовать.
PHP имеет три различных области видимости переменных:
- глобальная (global)
- локальная (local)
- статическая (static)
Глобальная область видимости
Переменная, объявленная вне функции, имеет ГЛОБАЛЬНУЮ ОБЛАСТЬ ВИДИМОСТИ и может использоваться только вне функции:
Пример
Переменная с глобальной областью видимости:
$x = 5; // глобальная область видимости
function myTest() {
// использование x внутри этой функции не будет работать
echo "Переменная x внутри функции: $x";
}
myTest();
echo "Переменная x вне функции: $x";
Попробуйте сами »
Локальная область видимости
Переменная, объявленная внутри функции, имеет ЛОКАЛЬНУЮ ОБЛАСТЬ ВИДИМОСТИ и может использоваться только внутри этой функции.
Локальные переменные создаются при вызове функции и уничтожаются после завершения выполнения функции:
Пример
Переменная с локальной областью видимости:
function myTest() {
$x = 5; // локальная область видимости
echo "Переменная x внутри функции: $x";
}
myTest();
// использование x вне функции не будет работать
echo "Переменная x вне функции: $x";
Попробуйте сами »
Статическая область видимости
Обычно, когда функция завершает выполнение, все ее переменные удаляются.
Однако иногда нам нужно, чтобы локальная переменная НЕ удалялась. Она нужна нам для
дальнейшей работы. Чтобы добиться этого, используйте ключевое слово static
при первом объявлении переменной.
Затем при каждом вызове функции эта переменная будет иметь значение из предыдущего вызова функции.
Примечание: Переменная по-прежнему является локальной для функции.
Пример
function myTest() {
static $x = 0; // статическая область видимости
echo $x;
$x++;
}
myTest();
myTest();
myTest();
Попробуйте сами »
Ключевое слово global в PHP
Ключевое слово global используется для доступа к глобальной переменной изнутри функции.
Для этого используйте ключевое слово global перед переменными (внутри
функции):
Пример
$x = 5;
$y = 10;
function myTest() {
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // выводит 15
Попробуйте сами »
Суперглобальный массив PHP $GLOBALS
PHP также хранит все глобальные переменные в массиве, называемом
$GLOBALS[index].
index содержит имя
переменной. Этот массив также доступен изнутри функций и может использоваться для
непосредственного обновления глобальных переменных.
Пример выше можно переписать следующим образом:
Пример
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // выводит 15
Попробуйте сами »