|
В примерах, приведенных выше, я попутно
показал, как происходит присваивание и
изменение значений переменных. И все же
стоит четко сформулировать правила
объявления переменных и выполнения
операций с ними. Ниже приводится подробное
описание этих правил.
Объявление переменных
Переменная представляет
собой именованную область памяти,
содержащую данные, с которыми можно
выполнять операции во время выполнения
программы.
Имена переменных всегда начинаются со
знака доллара, $. Ниже приведены примеры
допустимых имен переменных:
$соlоr
$operating_system
$_some_variable
$model
Имена переменных должны соответствовать
тем же условиям, что и идентификаторы.
Другими словами, имя переменной начинается
с буквы или символа подчеркивания и состоит
из букв, символов подчеркивания, цифр или
других ASCII-символов в интервале от 127 до 255.
Следует заметить, что переменные в РНР,
как и в языке Perl, не требуют специального
объявления. Вместо этого переменная
объявляется при первом ее использовании в
программе. Более того, тип переменной
косвенно определяется по типу хранящихся в
ней данных. Рассмотрим следующий пример:
$sentence = "This is a sentence."; // $sentence
интерпретируется как строка
$price = 42.99: // $price интерпретируется как
вещественное число
$weight = 185; // $weight интерпретируется как целое
число
Переменные могут объявляться в любой
точке сценария РНР, однако от расположения
объявления зависит то, откуда можно
обращаться к данной переменной.
Область видимости переменных
Область видимости (scope)
определяется как область доступности
переменной в той программе, в которой она
была объявлена. В зависимости от области
видимости переменные РНР делятся на четыре
типа:
- локальные
переменные;
- параметры функций;
- глобальные переменные;
- статические переменные.
Локальные переменные
Переменная, объявленная внутри функции,
считается локальной;
другими словами, на нее можно ссылаться
только в этой функции. При любом
присваивании вне функции будет
использоваться совершенно другая
переменная, которая не имеет ничего общего (кроме
имени) с переменной, объявленной внутри
функции. При выходе из функции, в которой
была объявлена локальная переменная, эта
переменная и ее значение уничтожаются.
Основное достоинство локальных
переменных — отсутствие непредвиденных
побочных эффектов, связанных со случайной
или намеренной модификацией глобальной
переменной. Рассмотрим следующий пример:
$х = 4;
function assignx () {
$х = 0;
print "\$x inside function is $x. ";
}
assignx();
print "\$x outside of function is $x. ";
При выполнении этого фрагмента выводится
следующий результат:
$х inside function is 0.
$х outside of function is 4.
Как видите, программа выводит два разных
значения переменной $х. Дело в том, что
переменная $х внутри функции assignx имеет
локальную природу, и изменение ее значения
никак не отражается на значении,
существующем за пределами этой функции.
Справедливо и обратное — модификация $х за
пределами функции никак не отражается на
локальных переменных функции assignx(). |