ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Функции. Часть Вторая.


28-12-2009

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 являются локальными, а переменная, хранящая значение Вашингтон, является глобальной.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Функции PHP. Функции. Часть Третья.