Лабораторная работа № 1. Введение в PHP По сути своей любой PHP-скрипт - это обычный текстовый файл, который, помимо простого текста (или HTML-кода), содержит в себе команды PHP. Когда пользователь обращается к такому скрипту, запрос передаётся серверу, который действует следующим образом: всё, что не является PHP-кодом, просто передаётся пользователю без изменений, но как только обработчик встречает метку начала PHP-кода, он выполняет этот код и «отдаёт» пользователю результат обработки. PHP-код может находиться в любой части документа и может быть включен в документ одним из двух способов: <?php <? PHP-код PHP-код или ?> ?> Основные правила написания программы на РНР: в именах переменных и функций большие и малые буквы различаются; в конце каждого оператора (команды) указывается точка с запятой (;); специального символа переноса оператора на другую строчку нет – переносить можно с любой позиции в которой можно указать пробел (слова не разрываются при переносе оператора). Переменные в PHP Переменные в РНР объявляются при первом их использовании в программе. Тип переменной косвенно определяется по типу хранящихся в ней данных. Имена переменных: начинаются со знака доллара ($); могут содержать только латинские буквы, цифры, символы подчеркивания; состоят из одного или нескольких символов и начинаются с буквы или символа подчеркивания; не может совпадать с каким-либо из стандартных ключевых слов РНР; учитывается регистр символов. С любыми переменными можно производить весь набор стандартных математических операций и некоторые дополнительные операции. Таблица 1. Основные операции для работы с переменными Знак Назначение Пример Сложение двух переменных. $v = 1; $k = 2; $s = $v + $k; // $s = 3 + Вычитание одной переменной $v = 1; $k = 2; $s = $v - $k; // $s = –1 – из другой Произведение переменных $v = 1; $k = 2; $s = $v * $k; // $s = 2 * Деление одной переменной на $v = 1; $k = 2; $s = $v / $k; // $s = 0.5 / другую Остаток от целочисленного $v = 1; $k = 2; $s = $v % $k; // $s = 1 % деления Инкремент (увеличение на $v = 6; $s = $v++; // $s = 6, а $v = 7 ++ единицу) $v = 6; $s = ++$v; // $s = 7, и $v = 7 Декремент (уменьшение на $v = 6; $s = $v--; // $s = 6, а $v = 5 –– единицу) $v = 6; $s = --$v; // $s = 5, и $v = 5 Сложение двух строк $v = "Как"; $k ="Вас"; $m="зовут?"; • $s = $v . " " . $k . " " . $m; // $s = "Как Вас зовут?" точка (конкатенация) $a = 3; $b = 1; $b += $a; // $b = 3 Составное присваивание. $a = 2; $b = 1; $b -= $a; // $b = –1 $a = 3; $b = 2; $b *= $a; // $b = 6 Вместо знака ? должен быть $a = 5; $b = 1; $b /= $a; // $b = 0.2 ?= подставлен один из знаков $a = "Здравия"; $b = "Желаю"; операций: + - * / % . $b .= $a; // $b = "Желаю Здравия" $a = 5; $b = 17; $b %= $a; // $b = 2 Таблица 2. Логические операторы Обозначение Название and И && or ИЛИ || xor Исключающее ИЛИ ! Инверсия (NOT) Таблица 3. Операторы сравнения Обозначение == === != <> != = < > <= >= Пример $a and $b $a && $b $a or $b $a || $b $a xor $b ! $a Название Равенство Эквивалентность Пример $a = = $b $a = = = $b $a != $b Неравенство $a <> $b Неэквивалентность $a != = $b $a < $b Меньше $a > $b Больше Меньше или равно $a <= $b Больше или равно $a >= $b Функции ввода В РНР существует несколько способов вывода информации на страницу: Операторы echo и print выводят значение аргумента: echo <строка>; print (<строка>); Работают одинаково, но print всегда возвращает 1, в то время как echo ничего не возвращает. var_dump (<переменная>); - выводит переменную вместе с типом. Замечания: Строковое выражение может быть взято как в одинарные, так и в двойные кавычки. Если используются двойные кавычки, то вместо имен переменных будут выводиться их значения. Функции для работы с переменными: 1. Функция isset (переменная) возвращает true, если данная переменная существует (т.е. определена в программе). 2. Процедура unset (переменная); удаляет данную переменную из внутренних таблиц интерпретатора. 3. Функции определения типа переменных: is_integer (переменная) - возвращает true, если переменная - целое число; is_double (переменная) - возвращает true, если переменная - действительное число; is_string (переменная) - возвращает true, если переменная - строка; is_numeric (переменная) - возвращает true, если переменная является числом или строковым представлением числа (строка состоящая из цифр); is_bool (переменная) - возвращает true, если переменная является логической; is_array (переменная) - возвращает true, если переменная - массив; gettype (переменная) - возвращает строку, соответствующую типу переменной (integer, double, string...). 4. Процедура settype (переменная, тип данных); преобразует значение переменной из одного типа в другой. Генерация случайных чисел Функция lcg_value ( ) возвращает случайное дробное число в диапазоне от 0 до 1. Функция rand ([int start, int end]) возвращает случайное число из диапазона, заданного начальным значением start и конечным значением end. Если значения не заданы, то возвращается случайное число от 0 до максимально-возможного значения (для Windows обычно до 32767). Максимально-возможное значение можно определить функцией getrandmax ( ). Перед тем как первый раз генерировать случайное число, нужно инициализировать генератор путем вызова функции srand ( ). Пример: <?php srand(); echo 'Наибольше случайное число - ' . getrandmax(); $a = rand(); $b = rand(1,50); $c = lcg_value(); echo '<br> rand() = ' . $a; echo '<br> rand(1,50) = ' . $b; echo '<br> lcg_value() = ' . $c; ?> Замечание. Начиная с версии PHP 4.2.0 не нужно вызывать srand() – PHP делает это автоматически. Константы Константы объявляются в РНР при помощи процедуры defme(): define('CONSTANT', value); или define(“CONSTANT”, value); 'CONSTANT' - имя константы, value - её значение. При использовании константы на неё ссылаются по имени. Например: define ('CONSTANT1', Группа) ; define("CONSTANT2", "\x20"); // код пробела define('CONSTANT3', 303); По традиции имена констант пишут буквами верхнего регистра. Существует функция defmed('CONSTANT'), которая проверяет, определена ли константа. Функция возвращает true, если константа определена в теле программы выше вызова данной функции. ПРАКТИЧЕСКАЯ РАБОТА № 1 Во всех скриптах в заголовке окна браузера должны быть ваши фамилия и имя! УПРАЖНЕНИЕ 1-1. Подготовительная работа 1. Запустите «Денвер». 2. На виртуальном диске «PHP-server» создайте в ней вашу личную папку (например, PHP_Фамилия). В вашей личной папке создайте еще одну папку с именем WWW (в ней будут располагаться все HTML и PHP-файлы вашего сайта). 3. Перезапустите «Денвер». 4. Откройте браузер и откройте в нём страницу http://192.168.0.44/student/ PHP_Фамилия/. Вы должны увидеть страницу с заголовком «Index of /» (рис. 1). Это означает, что новый сайт создан успешно. Таким же методом Вы можете создать любой другой сайт. Рис. 1 - Внешний вид только что созданного сайта 5. В папке WWW только что созданного сайта создайте новый текстовый файл с именем index.php. Откройте этот файл с помощью Блокнота и впишите в него следующий код: <p> Дата и время: <p> <?php $d=date("d.m.Y echo($d); ?> H:i"); Рис. 2 - Результат выполнения скрипта «Дата и время» 6. Сохраните файл. Откройте в браузере страницу http://192.168.0.44/student/ PHP_Фамилия/index.php. Если Вы сделали всё правильно, то перед Вами появится окно, показанное на рис. 2 (только дата и время будут другими). Пояснения: В первой строке идёт обычный текст и HTML-тег. Они никак не обрабатываются и просто передаются в браузер пользователя. Вторая строка помимо HTML-тега содержит ещё и метку начала PHP-кода. Всё, что располагается до метки <?php, передаётся в браузер без изменений. Третья строка примера - первая строка PHP-кода - вычисляет текущую дату с помощью функции date("d.m.Y H:i") и заносит её в переменную с именем $d. Четвёртая строка выводит переменную $d на экран. За это отвечает функция echo( ). Пятая строка говорит о том, что PHP-код закончился. Заметьте, что каждая строка заканчивается точкой с запятой (;). Этот символ является обязательным концом каждой завершённой команды PHP. УПРАЖНЕНИЕ 1-2 1. В папке WWW создайте новый текстовый файл с именем lab-1-1.php с кодом: <?php $var1= '3'; $var2 = 5; echo $var1 . ' - ' . gettype($var1) . '<br>'; print ($var2 . ' - ' . gettype($var2) . '<br>'); $var3= 'abc'; var_dump ($var3); echo '<br>'; $var4=123; var_dump ($var4); ?> 2. Сохраните файл. Откройте в браузере страницу http://192.168.0.44/student/ PHP_Фамилия/lab-1-1.php. УПРАЖНЕНИЕ 1-3 1. В папке WWW создайте новый текстовый файл с именем lab-1-2.php с кодом: <p> Арифметические операции: <p> <?php $x=12; $y=4; echo('12+4=' . ($x+$y) . '<br>'); echo('12-4=' . ($x-$y) . '<br>'); echo('12*4=' . ($x*$y) . '<br>'); echo('12/4=' . ($x/$y)); ?> 2. Сохраните файл. Откройте в браузере страницу http://192.168.0.44/student/ PHP_Фамилия/lab-1-2.php. 3. Измените текст файла lab-1-2.php следующим образом: <p> Арифметические операции: <p> <?php $x=rand(1,10); $y=rand(1,10); print ($x . '+' . $y . '=' . ($x+$y) . '<br>'); print ($x . '-' . $y . '=' . ($x-$y) . '<br>'); print ($x . '*' . $y . '=' . ($x*$y) . '<br>'); print ($x . '/' . $y . '=' . ($x/$y) . '<br>'); ?> 4. Сохраните файл. Откройте в браузере и несколько раз обновите страницу. УПРАЖНЕНИЕ 1-4 1. Создайте php-скрипт lab-1-3.php, в котором создайте константу NUM_E со значением 2.71828 (число е). 2. Выведите на экран значение этой константы в виде строки «Число e равно …». 3. Присвойте переменной $num_e1 значение константы и выведите на экран имя переменной $num_e1, ее значение и тип (т.е. в браузере должна получиться строка вида «$num_e1 = 2.71828 - double»). 4. Последовательно измените тип переменной $num_e1 на строковый, целый и булевский, каждый раз отображая тип и получившееся значение переменной $num_e1. САМОСТОЯТЕЛЬНАЯ РАБОТА № 1 Во всех скриптах в заголовке окна браузера должны быть ваши фамилия и имя! ЗАДАЧА №1 Создайте php-скрипт lab1-5.php, в котором вычисляется значение заданного выражения для случайных аргументов из интервала [-20, 20], а затем выводится на экран сама формула (с заменой имен переменных на их значения) и результат вычислений. Протестируйте работу скрипта и объясните полученный результат. Распределение заданий по вариантам: Вариант Функция 1 2c d a 1 4 d 23 a 1 3 Вариант Функция 6 2 c 42 d c a 1 2c 2 3 2 c 51 d d a 1 4 c 4 d 12 a 1 2 5 4 c d 1 a c 2 7 d 1 2 a2 b 5 42 c 8 b 2 c d 52 a 1 3 9 25 d 2 c d a2 1 10 2c 2 d d a2 1 Вариант Функция 11 d c b 7 2 2 a 1 12 d 2 2 a 1 4c 13 c b 23 a 4 d 1 2 14 c a 3 d 2 c a 1 15 12 73 d 2 c a2 2 a