Скачиваний:
35
Добавлен:
04.04.2013
Размер:
82.43 Кб
Скачать

5

P H P (лекция 1)

PHP. Лекция 1. Конспект

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

Генерирование страниц на стороне сервера позволяет отделить данные (полезная информация) от описания способа их форматирования (шаблона). В настоящее время существует несколько технологий генерирования (обработки) страниц на стороне сервера. Одной из наиболее распространенных технологий является PHP. Расшифровывается PHP как Per­sonal Home Page Tools (средства разработки личной домашней страницы). Первая версия интерпретатора языка PHP была разработана в 1994 году Расмусом Лердорфом. В настоящий момент разработчикам доступна четвертая версия интерпретатора PHP, а в скором будущем планируется выход пятой версии.

PHP является кросс-платформенным программным продуктом. Программы, написанные на языке PHP, называются скриптами. Скрипты могут генерировать HTML страницы,

обрабатывать данные, полученные от HTML-форм, обращаться к командам операционной системы, хранить данные во внешних файлах, использовать в качестве хранилища данных широкий спектр СУБД. В настоящее время реализовано большое количество библиотек, расширяющих функциональность PHP.

Код PHP-программы хранится в виде простого текста в формате ASCII, поэтому создавать скрипты можно в любом текстовом редакторе, например vi (при работе с ОС UNIX) или Notepad (ОС Windows). Как правило, PHP-скрипт представляет собой набор инструкций, встраиваемых в HTML страницу. При обращении к странице, сервер интерпретирует инструкции и возвращает обработанную страницу клиенту.

Ниже приведен пример простейшего PHP-скрипта, создающего страницу, содержащую строку "Hello world!".

<html>

<body>

<?php echo ("Hello world!"); ?>

</body>

</html>

Созданный файл (test.php) выложим на сервер в каталог, доступный для обработки интерпретатором PHP (например в корневой каталог сервера, имеющего адрес http://www.mysite.com). Скрипт будет доступен по адресу http://www.mysite.com/test.php .

Веб-сервер, получив запрос на выдачу документа с расширением php, запустит интерпретатор языка PHP. Интерпретатор начнет построчно анализировать файл в поисках php-инструкций. В приведенной выше программе содержится одна инструкция <?php echo ("Hello world!"); ?> . Данная инструкция дает интерпретатору указание добавить в анализируемый документ строку "Hello world!". Инструкции языка HTML интерпретатором не анализируются и остаются в неизменном виде. В результате, клиент получит документ, содержащий следующие строки:

<html>

<body>

Hello world!

</body>

</html>

Браузер интерпретирует инструкции языка HTML и выдает на экран надпись "Hello world!".

В приведенном выше примере для выделения инструкций языка PHP из тела HTML-страницы были использованы тэги <?php и ?>. Однако существуют и другие способы выделения PHP-инструкций:

<? echo ("Hello world!"); ?>

<script language="PHP"> echo ("Hello world!"); </script>

<% echo ("Hello world!"); %>

В зависимости от настроек сервера, можно использовать либо один из перечисленных вариантов, либо сразу несколько. Между тэгами, выделяющими блок PHP внутри HTML-страницы может располагаться неограниченное количество инструкций. Количество блоков, содержащих PHP-инструкции так же не ограничено. Инструкции внутри одного блока должны отделяться друг от друга символом "точка с запятой". В случае, если между инструкциями отсутствует разделитель, синтаксический анализатор PHP выдаст сообщение об ошибке. Ниже приведен пример PHP-скрипта, содержащего несколько инструкций.

Скрипт

Результат работы скрипта

<html>

<body>

<? echo ("Hello world!"); ?>

<br>

<? echo ("Text generated ");

echo "by PHP"; ?>

</body>

</html>

<html>

<body>

Hello world!

<br>

Text generated by PHP

</body>

</html>

В данном примере инструкции PHP расположены в двух блоках, причем во втором блоке расположены две инструкции. Функции "echo", организующей добавление строк в HTML-страницу можно, передавать аргумент как в скобках, так и без них.

PHP позволяет разработчику встраивать в обрабатываемую страницу блоки инструкций, интерпретируемых клиентом (блоки JavaScript).

<html>

<body>

<?

echo ("<script language="JavaScript"> alert('Hello!'); </script>");

?>

</body>

</html>

Данная программа работает следующим образом. На первом этапе интерпретатор языка PHP анализирует текст страницы и встраивает в нее строку при помощи функции echo. Содержимое строки echo может иметь произвольное содержимое и не анализируется интерпретатором. На втором этапе сформированная страница высылается браузеру. Браузер начинает анализировать HTML-инструкции и находит в теле страницы блок инструкций JavaScript. Далее происходит запуск интерпретатора языка JavaScript, который отображает диалог с сообщением "Hello!".

Таким образом средствами PHP была сформирована страница, содержащая элементы программы, исполняемой на стороне клиента.

В РНР есть три основных типа данных: целое число (integer), действи­тельное число (double) и строка (string). У каждой переменной есть свой тип, однако тип переменной может меняться на лету, когда изменяется значение перемен­ной или иным программным образом.

2 // Это целое число

2.0 // Это действительное число

"2" // Это строка

"2 hours" // Это тоже строка

В РНР начиная с версии 4 определен логический данных также присутствует. Для целых чисел 0 (ноль) вычисляет­ся как FALSE, а любое ненулевое целое значение - как TRUE. Аналогично, действительное значение 0,0 (или такие его эквиваленты, как 0,000) вычис­ляются как FALSE, а ненулевые значения вычисляются как TRUE. Что касает­ся строк, то пустая строка вычисляется как FALSE. Она представляется парой кавычек, между которыми ничего нет. Все непустые строки вычисляются как TRUE.

Константы - это неизменные значения.

Для создания констант используется функция define() :

define("NAME", "Иван");

define("VERSION", 3);

В отличие от констант, переменные автоматически объявляются в РНР при присвоении им значений. Присвоение осуществляется с помощью оператора присваивания (=). Имя переменной обязательно начинается с символа $ .

$name = "Иван";

$value1 = 22;

$value2 = 5.00;

Тип переменной автоматически определяется значением, присвоенным этой переменной.

$а = 1; // $а - целое

$а = 1.2; // теперь это число с плавающей запятой

$а = "А"; // теперь это строка

При выполнении над строкой числовой операции РНР переводит строку в число. В следующем при­мере переменной $str присваивается строковое значение:

$str = "222В Baker Street";

$х = 3 + $str; // $х = 225;

При преобразовании строк соблюдаются следующие правила:

  • В число переводится только начало строки. Если строка начинается с до­пустимого численного значения, она будет переведена в это значение, в противном случае - в ноль. Строка "3rd degree" переводится в 3 при ис­пользовании в числовой операции, но "Catch 22" будет переведена в О (ноль).

  • Строка переводится в число с плавающей запятой только в случае, если представляемое число занимает всю строку. Строки "3,4", "-4,01" и "4,200" переводятся в действительные числа 3,4, -4,01 и 4,200. Од­нако если строка включает другие символы, не представляющие действи­тельное число, она переводится в целое. Например, строка "3,4 chil­dren" переводится в целое число 3, а строка " -4,01 degrees" переводится в целое число -4.

Помимо преобразования строк РНР производит приведение различных чис­ловых типов. Если выполняется числовая операция над числом с плавающей запятой и целым, то результат будет числом с пла­вающей запятой:

$а = 1; // $а - целое

$b = 1.0; // $b - число с плавающей запятой

$с = $а +$b; // $с - число с плавающей запятой (значение 2,0)

$d = $с +"6th" // $d - число с плавающей запятой (значение 8,0)

При задании строк, в PHP можно использовать как одинарные, так и двойные кавычки. Использование двойных кавычек позволяет динамически подставлять в строку значения переменных. Одинарные кавычки такой возможности не предоставляют.

$username=’Иванов’;

echo "Здравствуйте, $username"; // Здравствуйте, Иванов

echo ’Здравствуйте, $username’; // Здравствуйте, $username

В РНР реализованы базовые математичес­кие операторы:

Оператор

Операция

Пример

Результат

+

Сложение

7+2

9

-

Вычитание

7-2

5

*

Умножение

7*2

14

/

Деление

7/2

3,5

%

Деление по модулю

7%2

1

Оператор точка (.) используется в РНР как оператор конка­тенации для соединения двух и более строковых значений в одну строку.

// Следующий код выводит "Иванов Иван Иванович"

$first = "Иван";

$last = "Иванов";

$full = $last." ".$first; // Иванов Иван

echo $full." Иванович"; // Иванов Иван Иванович

В РНР можно использовать сокращенные операторы в командах присваивания, для которых первый операнд являет­ся переменной, а результат присваивается той же переменной. Ниже приведен список сокращенных операторов:

Оператор

Эквивалент

$h += $i

$h = $h + $i

$h -= $i

$h = $h - $i

$h *= $i

$h = $h * $i

$h /= $i

$h = $h / $i

$h %= $i

$h = $h % $i

$h .= $i

$h = $h . $i

$h++

$h = $h + 1

$h--

$h = $h - 1

Операторы сравнения используются для проверки условия.

Оператор

Значение

Пример

Имеет значение true, если:

==

Равно

$h == $i

$h и $i имеют равные значения

<

Меньше

$h < $i

$h меньше $i

>

Больше

$h > $i

$h больше $i

<=

Меньше или равно

$h <= $i

$h меньше или равно $i

>=

Больше или равно

$h >= $i

$h больше или равно $i

!=

Не равно

$h != $i

$h не равно $i

<>

Не равно

$h <> $i

$h не равно $i

Условные операторы позволяют определять блоки кода, которые выполня­ются только при осуществлении некоторых условий. В РНР есть две услов­ные конструкции. Первая из них - это if ... elseif ... else, позволя­ющая проверить несколько выражений и выполнить операторы в соот­ветствии со значениями этих выражений. Если нужно сравнить одно выра­жение с рядом значений, то РНР предоставляет конструкцию switch ... case, упрощающую эту операцию.

Оператор if является одним из важнейших операторов, позволяющих выполнять выбранные строки кода только при истинности некоторых заданных условий. Например:

if ($h < 0) {

echo "Отрицательное число";

}

elseif ($h==0) {

echo "Ноль";

}

else {

echo "Положительное число";

}

Если при выполнении условия нужно выполнить несколько команд, то для обозначения строк, принадлежащих блоку if, используются фигурные скобки {}:

В РНР есть ключевое слово elseif для проверки альтернативных условий, если условие if оказывается не выполненным. В операторе if мож­но использовать любое количество операторов elseif. Последняя ветвь else позволяет указать код, который нужно выполнить, если ни одно из условий if или elseif не оказалось истинным.

Условия можно объединять с помощью логических операторов "и" (&&), "или" ( || ) :

if (($a < $b) && ($b > $c)) echo "Условия выполнены";

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

switch ($country) {

case "ca":

echo "Канада";

break;

case "ru":

echo "Россия";

break;

case "de":

echo "Германия";

break;

default:

echo "Информация отсутствует";

}

Оператор switch вычисляет значение $country и сравнивает его со всеми зна­чениями в предложениях case. При обнаружении совпадения выполняются операторы, относящиеся к соответствующему блоку case, пока не будет обнаружен оператор. Если соответствие не обнаружено, выполняются операторы блока default. Нали­чие блока default не является обязательным.

Соседние файлы в папке 3_Язык РНР