4.3. Диапазоны
Для того чтобы избежать взаимного влияния переменных в различных функциях, в PHP имеется понятие диапазона. Каждая строка программного кода принадлежит к определенному диапазону. Так, код, находящийся внутри функции, принадлежит к диапазону функции. Код, расположенный вне функции, считается принадлежащим к глобальному диапазону. Диапазон - это свойство, которое определяет, какая таблица памяти используется для хранения переменных и какие из переменных являются доступными.
Переменные, объявленные в пределах диапазона функции, являются локальными переменными. Локальные переменные активны только в пределах функции и никогда не могут обрабатываться за ее пределами. Переменные, которые используются вне функции, являются глобальными переменными. В отличие от других языков программирования, глобальные переменные в PHP необязательно будут доступными вне глобального диапазона.
Программный код, приведенный в листинге 4.4, внутри функции assignName присваивает переменной name значение "Зеев", не меняя при этом значение переменной name в глобальном диапазоне. Имя локальной переменной после передачи функцией управления никогда больше не проявляется. Существуют два способа доступа к переменным глобального диапазона из функции: с помощью оператора global и массива GLOBALS.
Листинг 4.4. Эксперименты с диапазоном
<?php
function assignName()
{
$name = "Зеев";
}
$name = "Леон"; assignName(); //Печатает Леон print($name);
?>
Оператор global позволяет работать глобальной переменной внутри пространства имен функции. После этого с переменной можно работать и вне функции. Любое изменение значения переменной сохраняется и после завершения выполнения функции. Аналогично, можно ссылаться на глобальные переменные через массив GLOBALS. Этот массив проиндексирован по именам, поэтому, создав переменную userName, ею можно манипулировать с помощью выражения $GLOBALS["userName"] в пределах функции.
В листинге 4.5 представлена функция printCity, задача которой заключается в распечатке названия города. Она предназначена для вывода на экран переменных capital. Здесь мы говорим о переменных во множественном числе, так как в действительности в данном сценарии присутствуют три переменные capital. Одна из них является глобальной, а две другие - локальными для функций California и Utah.
Листинг 4.5. Применение глобального диапазона
<?
$capital = "Вашингтон"; function Nation()
global $capital; printCity($capital);
function printCity($NameOfCity)
print("The city is $NameOfCity.<br>n");
function California()
$capital = "Сакраменто"; printCity($capital);
function Utah()
$capital = "Солт-Лейк-Сити"; printCity($capital);
Nation();
California();
Utah(); Nation();
?>
Запустив этот сценарий, вы убедитесь в том, что названия городов будут распечатаны в следующем порядке: Вашингтон, Сакраменто, Солт-Лейк-Сити и Вашингтон. Заметим, что присвоение переменной capital нового значения в функциях California и Utah показывает, что это совсем другие переменные. Переменные внутри функций California и Utah являются локальными, а переменная, хранящая значение Вашингтон, является глобальной.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Функции. Часть Вторая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Функции | PHP. Функции. Часть Третья. |