Переменные и типы данных PHP
Переменные Переменная представляет собой именованную область памяти, содержащую данные, с которыми можно выполнять операции во время выполнения программы. Имена переменных всегда начинаются со знака доллара, $. Ниже приведены примеры допустимых имен переменных: $со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; echo "\$x внутри функции равен $x. <br>"; } assignx(); echo "\$x вне функции равен $x. <br>";
Результат выполнения этого кода:
$х внутри функции равен 0. $х вне функции равен 4.
Как показано, программа выводит два разных значения переменной $х. Дело в том, что переменная $х внутри функции assignx имеет локальную природу, и изменение ее значения никак не отражается на значении, существующем за пределами этой функции. Справедливо и обратное — модификация $х за пределами функции никак не отражается на локальных переменных функции assignx().
Глобальные переменные
Глобальные переменные, в отличие от локальных, доступны в любой точке программы. Но чтобы изменить значение глобальной переменной, необходимо специально объявить ее как глобальную в соответствующей функции. Для этого перед именем переменной ставится ключевое слово GLOBAL. Пример: <? $somevar = 15; function addit() { GLOBAL $somevar; $somevar++; echo "Somevar is $somevar"; } addit(); ?> Результат представлен на рис. 7.
Рис. 7. Результат работы с глобальной переменной $somevar
Если из программы убрать строку: GLOBAL $somevar; В этом случае $somevar будет присвоено значение 1, поскольку эта переменная будет считаться локальной по отношению к функции addit(). Локальная переменная по умолчанию инициализируется 0, а затем к ней прибавляется 1; таким образом, будет выведено значение 1. Альтернативный способ объявления глобальных переменных связан с использованием массива РНР $GLOBALS().
Статические переменные
Последний тип видимости переменных называется статическим. В отличие от переменных, объявленных параметрами и уничтожаемых при выходе из функции, статическая переменная сохраняет свое значение при повторном вызове. Для объявления статической переменной перед ее именем ставится ключевое слово STATIC: STATIC $somevar; Рассмотрим пример: <? function keep_track() { STATIC $count = 0; $count++; echo $count; echo "<br>"; } keep_track(); keep_track(); keep_track(); ?> Результат работы представлен на рис. 8.
Рис. 8. Результат работы программы со статической переменной $count
Если бы переменная $count не была объявлена статической (то есть являлась локальной), результат выглядел бы так: Статические переменные особенно удобны при написании рекурсивных функций — особого класса функций, которые многократно вызывают сами себя до выполнения некоторого условия.
Константы
Константой называется именованная величина, которая не изменяется в процессе выполнения программы. Константы особенно удобны при работе с заведомо постоянными величинами — например, числом pi (3,141592) или количеством футов в миле (5280). В РНР константы определяются функцией define(). После того как константа будет определена, вы не сможете изменить (или переопределить) ее в этой программе. Например, определение числа я в сценарии РНР может выглядеть так: define("PI", "3.141592"); Определенную константу можно использовать в программе: <? define("PI", "3.141592"); echo "Значение pi равно ", PI, "<br>"; $pi2 = 2 * PI; echo "Удвоенное значение pi равно ", $pi2; ?>
Рис. 9. Результат работы программы с константами
В этом фрагменте следует обратить внимание на два обстоятельства. Во-первых, в именах констант не указывается знак доллара. Во-вторых, константу невозможно модифицировать (например, присвоить ей величину 2*РI); если константа используется в вычислениях, то результат приходится сохранять в другой переменной.
Типы данных
Типы данных составляют основу любого языка программирования и являются средством, с помощью которого программист представляет разные типы информации. В РНР поддерживаются шесть основных типов данных:
· целые числа; · вещественные числа; · строки; · массивы; · объекты; · логические величины. Одним из столпов любого языка программирования является поддержка числовых данных. В РНР поддерживаются как целые, так и вещественные числа (двойной точности). Разные числовые форматы подробно описываются в следующих разделах. Целое число не имеет дробной части и представляется последовательностью из одной или нескольких цифр. Примеры целых чисел: 5, 591, 52. Вещественные числа (числа с плавающей точкой) отличаются от целых наличием дробной части. Они используются для представления значений, требующих повышенной точности, — например, температур или денежных величин. В РНР поддерживаются два вещественных формата: стандартная и научная (экспоненциальная) запись. Стандартная запись удобна для представления типичных вещественных чисел — скажем, денежных величин. Примеры: 12.45, 98.6. Строки делятся на две категории в зависимости от типа ограничителя — они могут ограничиваться парой кавычек (" ") или апострофов (' '). Между этими категориями существуют два принципиальных различия. Во-первых, имена переменных в строках, заключенных в кавычки, заменяются соответствующими значениями, а строки в апострофах интерпретируются буквально, даже если в них присутствуют имена переменных, Два следующих объявления дают одинаковый результат: $food = "meatloaf"; $food = 'meatloaf'; Однако результаты следующих объявлений сильно различаются: $sentence = "My favorite food is $food"; $sentence2 = 'My favorite food is $food'; Переменной $sentence присваивается строка My favorite food is meatloaf. Обратите внимание: переменная $food автоматически интерпретируется. С другой стороны, переменной $sentence2 присваивается строка My favorite food is $food. В отличие от переменной $sentence, в $sentence2 осталась не интерпретированная переменная $food. Различия обусловлены использованием кавычек и апострофов при присваивании переменным $sentence и $sentence2. В РНР, как и в большинстве современных языков программирования, строки могут содержать служебные символы (например, символы табуляции или новой строки), перечисленные в табл. 1.
Таблица 1. Служебные символы в строках
Объекты К пятому типу данных РНР относятся объекты. Объект представляет собой переменную, экземпляр которой создается по специальному шаблону, называемому классом. Концепции объектов и классов являются неотъемлемой частью парадигмы объектно-ориентированного программирования (ООП). В отличие от других типов данных, поддерживаемых в языке РНР, объекты должны объявляться явно. Необходимо понимать, что объект — всего лишь конкретный экземпляр класса, используемого в качестве шаблона для создания объектов с конкретными характеристиками и функциональными возможностями. Следовательно, объявление класса должно предшествовать объявлению объектов, создаваемых на их основе. Пример объявления класса и последующего создания объектов на его основе: class appliance { var power: function set_power($on_off) { $this->power = $on_off; } } ... $blender = new appliance; Определение класса задает атрибуты и функции, связанные с некоторой структурой данных — в данном примере это структура с именем appliance (устройство). У этой структуры имеется всего один атрибут power (мощность). Для изменения этого атрибута создается метод set_power. Помните: определение класса — всего лишь шаблон, и выполнять операции с ним в программе невозможно; сначала нужно создать объекты на основе этого шаблона. Объекты создаются при помощи ключевого слова new. Например, в приведенном выше фрагменте создается объект $blender класса appliance. После создания объекта $blender можно задать его мощность при помощи метода set_power: $blender->set_power("on"); Объектно-ориентированное программирование занимает столь важное место в современных стандартах программирования, что его применение в РНР заслуживает отдельной главы.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|