Открылась Компьютерная Ярмарка Expo-com.ru на Тульской 
6000 кв.м, 20 000 покупателей в день.
Удачное расположение (м. "Тульская"), большой ассортимент, автостоянка, лифты, кафе, туалеты, телефонная связь, интернет. 
Арендаторам: 1 месяц бесплатно
Режим работы и проезд см. здесь >>
реклама у нас
***

PHP. Урок 3

Автор: Владислав Путяк

Продолжение. Начало смотрите в выпусках IZone497, IZone503.

Область видимости переменных

Область видимости (scope) определяется как область доступности переменной в той программе, в которой она была объявлена. В зависимости от области видимости переменные РНР делятся на четыре типа:

  • локальные переменные;

  • параметры функций;

  • глобальные переменные;

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

Локальные переменные

Переменная, объявленная внутри функции, считается локальной; другими словами, на нее можно ссылаться только в этой функции. При любом присваивании вне функции будет использоваться совершенно другая переменная, которая не имеет ничего общего (кроме имени) с переменной, объявленной внутри функции. При выходе из функции, в которой была объявлена локальная переменная, эта переменная и ее значение уничтожаются.

Основное достоинство локальных переменных — отсутствие непредвиденных побочных эффектов, связанных со случайной или намеренной модификацией глобальной переменной. Рассмотрим следующий пример:

$х = 4;
function assignx () {
$х = 0;
print "\$x inside function is $x. <br>";
}
assignx();
print "\$x outside of function is $x. <br>";

При выполнении этого фрагмента выводится следующий результат:

$х inside function is 0.
$х outside of function is 4.

Как видите, программа выводит два разных значения переменной $х. Дело в том, что переменная $х внутри функции assignx имеет локальную природу, и изменение ее значения никак не отражается на значении, существующем за пределами этой функции. Справедливо и обратное — модификация $х за пределами функции никак не отражается на локальных переменных функции assignx().

Параметры функций

В РНР, как и во многих других языках программирования, любые параметры, передаваемые функции при вызове, должны быть объявлены в заголовке функции. Хотя параметрам присваиваются аргументы, переданные извне, после выхода из функции они становятся недоступными.

Параметры объявляются в круглых скобках после имени функции. Объявление параметров практически не отличается от объявления типичной переменной:

// Функция умножает переданное значение на 10 и возвращает результат
function x10 ($value) {
$value = $value * 10;
return $value;
}

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

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

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

$somevar = 15;
function addit() {
GLOBAL $somevar;
$somevar++;
print "Somevar is $somevar";
}
addit();

Будет выведено значение $somevar, равное 16. Допустим, вы забыли включить следующую строку:

GLOBAL $somevar;

В этом случае $somevar будет присвоено значение 1, поскольку эта переменная будет считаться локальной по отношению к функции addit( ). Локальная переменная по умолчанию инициализируется 0, а затем к ней прибавляется 1; таким образом, будет выведено значение 1.

Альтернативный способ объявления глобальных переменных связан с использованием массива РНР $GLOBALS( ). Давайте вернемся к предыдущему примеру и воспользуемся этим массивом для объявления глобальной переменной $somevar: $somevar = 15;

function addit() {
$GLOBALS["somevar"];
$somevar++;
}
addit();
print "Somevar is $somevar";

Каким бы способом ни обеспечивалась глобальная видимость переменной, помните, что неосторожное использование глобальных переменных нередко приводит к неожиданным результатам, причиняющим немало хлопот программистам. Таким образом, хотя глобальные переменные очень удобны, при их использовании необходима умеренность.

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

Последний тип видимости переменных называется статическим. В отличие от переменных, объявленных параметрами и уничтожаемых при выходе из функции, статическая переменная сохраняет свое значение при повторном вызове. Для объявления статической переменной перед ее именем ставится ключевое слово STATIC:

STATIC $somevar;

Рассмотрим пример:

function keep_track() {
STATIC $count = 0;
$count++;
print $count;
print "<br>";
}
keep_track();
keep_track();
keep_track();

Как будут выглядеть результаты работы этого сценария? Если бы переменная $count не была объявлена статической (то есть являлась локальной), результат выглядел бы так:

1
1
1

Но поскольку переменная $count является статической, при каждом вызове функции будет сохраняться ее предыдущее значение, поэтому результат будет таким:

1
2
3

Статические переменные особенно удобны при написании рекурсивных функций — особого класса функций, которые многократно вызывают сами себя до выполнения некоторого условия.

Все. На сегодня хватит. В следующий раз мы рассмотрим как изменять тип переменных, присваивать значения по типу. Также вы узнаете о константах в PHP.

Источник: http://docs.h10.ru
 

***

***

Copyright © "Internet Zone"info@izcity.com. Условия использования материалов