Знакомство с PHP
Язык PHP был создан Расмусом Лердорфом (Rasmus Lerdorf) осенью 1994
года исключительно в личных целях – Расмус хотел вести статистику
посещаемости своего сайта (аббревиатура PHP расшифровывалась как
Personal Home Page). Средствами HTML это было реализовать невозможно, а
другие инструменты для решения этой задачи по каким-то причинам Расмуса
не удовлетворяли, поэтому он создал свое простое и удобное средство. Он
и не думал о том, что его идея может оказаться интересной еще
кому-либо. Но люди, которые использовали для хостинга своих сайтов тот
же сервер, что и Расмус, заинтересовались этой простой и удобной
оболочкой. Автор пошел им навстречу, так в 1995 году появилась первая
общедоступная версия PHP.
Андрей Гончаров
На тот момент PHP обладал весьма скромными возможностями, но уже к
середине 1995 года он научился принимать данные HTML-форм и работать с
базами данных. С тех пор PHP все время совершенствовался, и на
сегодняшний день представляет собой удобный инструмент для создания
динамических HTML-страниц. Изменилось и значение аббревиатуры: теперь
PHP рекурсивно расшифровывается как PHP: Hypertext Preprocessor (PHP –
гипертекстовый препроцессор).
Так что же такое PHP? PHP – это скрипт-язык, интерпретируемый на
стороне сервера. После выполнения скрипта серверов браузеру передаются
результаты его работы в виде HTML-страницы.
Так как целью данной статьи является обучение основам написания
PHP-скриптов, то сначала определимся с инструментами, которые для этого
понадобятся. Для того чтобы отлаживать скрипты, необходимо установить
на компьютере веб-сервер, например Apache (www.apache.org), и
собственно сам PHP (www.php.net или http://ru.php.net). Также нам
понадобится текстовый редактор. Конечно, сойдет и Notepad, но его
возможностей может оказаться недостаточно для комфортной работы. Для
дальнейшего освоения PHP я бы советовал использовать редактор с
подсветкой синтаксиса, например HomeSite 4.51 (www.allaire.com), или,
еще лучше, специализированный редактор со средой отладки, например PHP
Coder (www.phpide.de). Процесс установки и настройки веб-сервера Apache
и PHP описан во множестве статей, в частности, их можно найти на сайте
http://adonis.dem.ru. Итак, начнем.
Структура скрипта.
Сам скрипт представляет собой обычный текстовый файл, в котором
содержится одна либо несколько секций . Для лучшего
восприятия сказанного напишем простейший скрипт, выводящий в браузер
простейшую HTML-страницу с надписью «Это первый скрипт». Для этого
создадим файл first.php следующего содержания:
<!doctype html public "-//W3C//DTD HTML 4.0 //RU">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251">
<title>Первый скрипт!</title>
</head>
<body>
<?php
echo "Это первый скрипт";
?>
</body>
</html>
|
Теперь, если вы наберете в браузере (подразумевается, что веб-сервер
и PHP уже установлены и функционируют на компьютере) адрес
http://127.0.0.1/first.php, то увидите (если не допустили ошибок при
наборе текста скрипта) страничку, содержащую единственную строчку «Это
первый скрипт». Данный скрипт является бессмысленным, так как его
функциональность можно реализовать с использованием средств HTML. Зато
мы видим, каким именно образом PHP-код можно встраивать в
HTML-страницу.
У вас, наверное, уже возникли вопросы: а что же мне, собственно,
может дать использование PHP? Зачем он вообще нужен? Чтобы на них
ответить, давайте рассмотрим такую ситуацию: вам нужно создать
несколько похожих друг на друга HTML-страниц, которые содержат разные
заголовки и изображения. Без использования PHP потребовалось бы
создавать все эти страницы с нуля, каждый раз используя практически
одинаковые фрагменты HTML-кода. А вот как можно решить эту задачу с
использованием PHP: создать файлы-шаблоны повторяющихся частей страниц,
а затем – несколько скриптов, содержащих несколько строк кода.
Рассмотрим пример.
Создадим файл-шаблон «верхний колонтитул» страницы header.tpl следующего содержания:
<!doctype html public "-//W3C//DTD HTML 4.0 //RU">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251">
<title></title>
</head>
<body>
|
А вот содержимое файла-шаблона "нижний колонтитул":
<img src="">
</body>
</html>
|
Возможно, встречающиеся слова echo, $title, $image покажутся вам
непонятными. Так вот, echo – это функция PHP для вывода текстовых
данных в браузер. С ее помощью можно выводить просто текст, как мы
делали еще в первом примере, а можно и значения переменных. В нашем
случае $title и $image и есть переменные. В отличие от большинства
языков программирования, в PHP нет необходимости переменные и их тип
объявлять заранее. О том, что это переменные, свидетельствует знак «$»
в начале их имени. По аналогии с языками С и С++ имена переменных в PHP
могут состоять из символов латиницы, цифр и знака подчеркивания. Кроме
того, PHP чувствителен к регистру, поэтому $var1 и $Var1 будут двумя
разными переменными. Так же, как и в С/С++, в PHP каждая отдельная
конструкция должна завершаться точкой с запятой – «;».
Теперь, когда мы ответили на возникшие вопросы, вернемся к нашей
задаче и напишем скрипты, использующие наши шаблоны. Создадим файл
page1.php:
<?php
$title = "Страница 1";
include("header.tpl");
$image = "img/1.gif";
echo "Заголовок 1";
include("footer.tpl");
?>
|
И файл page2.php:
<?php
$title = "Страница 2";
include("header.tpl");
$image = "img/2.gif";
echo "Заголовок 2";
include("footer.tpl");
?>
|
Теперь, если вы наберете в браузере http://127.0.0.1/ page1.php, то
увидите страницу с заголовком «Страница 1», содержащую строку
«Заголовок 1» и рисунок. Аналогичным образом можно просмотреть и
страницу page2.php. Как видите, для создания множества страниц сходной
структуры не приходится повторять множество тегов.
В этих скриптах полезной функцией является include(). Эта функция
подставляет в тело скрипта (в той позиции, где она вызывается)
содержимое файла, который передается ей в качестве параметра, то есть в
нашем случае header.tpl и footer.tpl. Она же может оказаться полезной
для включения в текст скрипта других фрагментов программного кода.
Следует также отметить, что если файл, который нужно включить в скрипт,
находится в директории, отличной от той, где находится скрипт, то нужно
также указать полный путь к файлу, например
include("dir1/dir2/somefile.ext");.
Если возникает необходимость использовать в скрипте данные, которые
не изменяются по ходу его выполнения, то их лучше всего объявить в виде
константы: define("CONST","value");. Особенность объявления констант
заключается в том, что это необходимо делать в начале секции:
<?php
define("CONST","3");
echo CONST;
?>
|
Когда ваш скрипт станет чуть более сложным, может возникнуть
необходимость добавить в него комментарии, чтобы облегчить понимание
логики происходящего. В PHP есть несколько возможностей добавления
комментариев: можно закомментировать либо целую строку, либо несколько
строк. Символы «//» или «#» свидетельствуют о том, что все стоящее
после них и до конца строки является комментарием. Если необходимо
закомментировать какой-то фрагмент скрипта, то лучше воспользоваться
комбинацией «/*» и «*/». Пример:
<?php
$var = 1; // присваиваем переменной значение
/*
пример комментария, состоящего
из нескольких строк.
*/
?>
|
Теперь пришло время изучить вопросы, без которых не обойтись при написании действительно полезных скриптов.
Операции, выражения, операторы.
Выражение в программировании служит для определения действий,
которые обычно описываются формулами. Выражения состоят из операций и
операндов. Последовательность выполнения операций определяется
следующими факторами:
- приоритетом операций;
- порядком расположения операций в выражении;
- использованием скобок.
По приоритету все операции делятся на три группы. Операции первого –
высшего – приоритета выполняются в первую очередь. Операции третьего –
низшего – приоритета выполняются в последнюю очередь. Операции с равным
приоритетом выполняются слева направо. Скобки служат для изменения
обычного порядка обработки операций. Подвыражение, заключенное в
скобки, сначала вычисляется как отдельный операнд, а затем его
результат используется для выполнения операций, обрамляющих скобки.
Приоритет операций.
Приоритет |
Операции |
Первый |
*, /, % |
Второй |
+, – |
Третий |
==, !=, >=, <=, <, > |
Рассмотрим основные операции PHP.
Арифметические операции.
Операция |
Действие |
+ |
Сложение |
- |
Вычитание |
* |
Умножение |
/ |
Деление |
% |
Остаток от деления |
Операции отношения.
Операция |
Действие |
== |
Равно |
!= |
Не равно |
< |
Меньше |
> |
Больше |
<= |
Меньше или равно |
>= |
Больше или равно |
Арифметические операции.
Операнды |
Операции |
A |
B |
!A (не) |
A &&[A1] B (и) |
A || B (или) |
False |
False |
True |
False |
False |
False |
True |
True |
False |
True |
True |
False |
False |
False |
True |
True |
True |
False |
True |
True |
При реализации алгоритма работы скрипта действия, которые необходимо
выполнить, описываются операторами. Операторы бывают простые и
структурные. К простым относится, например, оператор присваивания «=».
А вот для реализации «логики» скрипта используются структурные
операторы, такие как if, switch, do..while, for. Вот пример их
использования:
<?php
$v1=3;
$v2=4;
$v3=8;
//если $v2 не равно $v3
if($v2!=$v3)
{ //то
$v4=10;
} // иначе
else
{
$v4=20;
}
switch($v3)
{ // если $v3 равно 3
case 3:
echo "v3=3"; // то выводим на экран строку: v3=3
break; // выход из оператора
case 8: // если $v3 равно 8
echo "v3=8"; // то выводим на экран строку: v3=8
break; // выход из оператора
default: // если переменная $v3 не равна ни одному
// из предшествующих выражений
echo "v3 != 3, v3 != 8"; // то выводим
// на экран строку: v3 != 3, v3 != 8
break; // выход из оператора
}
$i = 10;
do // выполняем операторы внутри фигурных скобок
{
echo $i; // выводим значение переменной $i
i—–; // уменьшаем значение переменной на единицу
}// пока переменная $i больше нуля
while ($i>0);
// выполняем операторы внутри фигурных скобок 10 раз
for($i=0;$i<10;$i++)
{
echo "hi! –".$i; // прибавляем (символ "." объединяет
// строки) к строке "hi! –"
// значение переменной $i
// и выводим результат
}
?>
|
Функции, массивы, работа с файлами.
Когда вы будете писать собственные скрипты, то могут возникнуть
такие ситуации, когда некоторые части скрипта повторяются, а меняются
лишь данные, которыми вы оперируете. В таких случаях целесообразно
разбить скрипт на подпрограммы. РНР предоставляет такую возможность.
Для этого можно использовать функции. Вот пример функции:
<?php
// определяем функцию, которая возвращает минимальное
// из двух значений
function MinVal($var1,$var2)
{
if($var1<$var2)
{
return $var1;
}
else
{
return $var2; }
}
echo "<br>".MinVal(3,5); // функция вернет число 3
echo "<br>".MinVal(4,8); // функция вернет число 4
?>
|
PHP предоставляет также возможность работать с массивами. Массив можно определить несколькими способами, в частности, так:
|