Лабораторная работа № 10.
Основы языка php.

Цель работы: Изучить основы языка PHP.

Базовые сведения:

Основы Web-программирования

Web-программирование

- разработка любых программных продуктов, предназначенных для работы на сайтах World Wide Web. Строго говоря, даже разработка web-страниц на чистом HTML является web-программированием, ведь при просмотре страницы браузер фактически исполняет код HTML, форматируя текст согласно инструкциям этого языка. В настоящее время под web-программированием понимают создание CGI-приложений и использование на web-странице технологий JavaScript и VBScript для достижений сложных эффектов.

Web-сервер

- программа, запущенная на узле сети Интернет и выдающая посетителям этого узла web-страницы по запросам. Также web-сервером часто называется узел, на котором эта программа запущена, или даже компьютер, являющийся таким узлом.

CGI

(сокращение от Common Gateway Interface) - технология, позволяющая запускать на web-сервере программы, имеющие возможность получать данные от посетителей сайтов, поддерживаемых этим web-сервером, и в свою очередь выдавать им обработанные данные в виде web-страниц или других файлов.

Для использования технологии CGI программа web-сервер должна удовлетворять определенным критериям - "поддерживать CGI". Если программа, запускаемая на web-сервере, представлена не двоичным кодом (т. е. скомпилированным файлом), а текстовым, то для ее выполнения требуется программа-интерпретатор того языка, на котором написана эта программа.

Такой интерпретатор включается в состав web-сервера и вызывается им при необходимости заняться выполнением программного кода. CGI-сценарий (CGI-скрипт) - программа (в текстовом виде), предназначенная для исполнения на web-сервере. Для создания CGI-скриптов можно использовать любой язык программирования ажно лишь, чтобы на том web-сервере, где предполагается эту программу запускать, имелся интерпретатор этого языка.

Препроцессор - программа, работающая совместно с web-сервером, которая просматривает все или некоторые файлы, выдаваемые web-сервером посетителям, и выполняет над ними определенные действия в зависимости от содержащихся в этих файлах инструкций. РНР является именно препроцессором, что, собственно, и видно из его названия.

Все языки программирования, используемые при разработке web-сайтов, можно разделить на две большие группы.

К первой относятся те из них, код которых выполняется на компьютере посетителя сайта, т. е. в браузере, запущенном на компьютере пользователя. Это известные всем JavaScript и VBScript. Программы на этих языках встраиваются в код web-страниц или выносятся в отдельный файл, обращение к которому осуществляется из web-страницы (в этом случае браузер все равно обрабатывает такие «вынесенные» программы таким же образом, как если бы они были встроены в код страницы).

Во вторую группу включаются те языки, программы на которых выполняются на том компьютере, где расположен web-сервер. Эта группа более обширна - дело в том, что в принципе на web-сервере могут исполняться программы на любом языке, даже командных .bat-файлов MS-DOS, важно лишь, чтобы на нем была установлена программа-интерпретатор этого языка, удовлетворяющая стандарту CGI, которому также должен удовлетворять сам web-сервер.

РНР относится ко второй группе - программа на РНР исполняется на web-сервере. Однако от других CGI-языков РНР сильно отличается в лучшую сторону прежде всего своей простотой. При создании программы на РНР нет необходимости учитывать все те многочисленные мелочи, которые отравляют жизнь программистам на Perl или C++, - не надо заботиться о правах доступа к файлам сценария, не надо прописывать точные пути к различным модулям, нет необходимости следить за отсутствием в файле скрипта недопустимых символов.

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

В то время как CGI-приложение просто выдает некие данные в браузер посетителя, препроцессор просматривает все или некоторые файлы, выдаваемые web-сервером посетителю, и ищет в них определенные команды, которые и выполняет. Именно такой способ работы и позволяет указывать код программ на РНР непосредственно в тексте web-страниц.) Одним из наиболее заметных достоинств РНР является возможность без особых затруднений работать с серверами баз данных.

Возможности РНР можно весьма серьезно расширить с помощью дополнительных модулей, содержащих различные функции. Эти модули при необходимости размещаются на web-сервере, на котором установлен PHP-интерпретатор. Большое количество готовых модулей можно загрузить с адреса http://www.php.net, там же в разделе документации приведено и полное их описание.

Например, модуль Zlib позволяет работать из программы на РНР с архивами в формате Gzip, а модуль libswf - с Flash-презентациями, создавая и редактируя их прямо из программы на РНР.

История создания PHP

В отличие от многих других языков программирования, РНР был создан не какой-либо корпорацией или гением-программистом, а обычным пользователем, Расмусом Лердорфом, в далеком 1994 году. Цель разработки языка была проста - сделать домашнюю страничку Расмуса более интерактивной, а значит, и более привлекательной для посетителей. Расмус разработал базовый синтаксис и написал первый интерпретатор своего языка, получившего название Personal Home Page Tools - т. е. РНР. Этот интерпретатор мог обрабатывать лишь несколько основных команд, однако начало было положено.

В 1995 году Расмус доработал интерпретатор РНР, соединив его с другой своей программой, умевшей обрабатывать HTML-формы (именовавшейся FI - от "Form Interpretator"), а также сделал так, что интерпретатор, получивший название PHP/FI Version 2, мог становиться частью web-сервера. Это новшество позволило программам на РНР исполняться очень быстро. Кроме того, в том же 1995 году интерпретатор РНР был дополнен возможностями1 обработки новых команд, в частности, команд для работы с серверами баз данных и автоматического создания gif-файлов (последнее, к примеру, может быть использовано для генерации кнопок-счетчиков посещений). PHP/FI был размещен в Сети для всеобщего использования, и началось его повсеместное распространение.

К концу 1997 года РНР использовался более чем на пятидесяти тысячах сайтов. Web-мастера быстро оценили достоинства нового языка web-программирования, такие как легкость освоения и богатство возможностей, и вскоре традиционные Perl и С стали сдавать свои позиции.

Так как исходный код интерпретатора был открыт (а сам интерпретатор, понятно, бесплатен), то энтузиасты стали заниматься его доработкой, и летом 1998 года появился на свет РНРЗ - детище Зива Сураски и Энди Гутманса (Zeev Suraski and Andi Gutmans). РНРЗ был создан практически "с нуля", так как его авторы сочли код предыдущих версий недостаточно эффективным. Кроме того, РНРЗ стал весьма легко расширяемым продуктом. Любой, создавший на основе определенных стандартов модуль расширения РНР, позволяющий, скажем, работать с архивами какого-либо типа, мог этот модуль интегрировать с программными файлами РНР без каких-либо серьезных затрат времени и сил.

Уже к концу 1999 года число сайтов, построенных на основе РНР, перевалило за миллион. Весьма важным достоинством РНР также являлось то, что программы, позволявшие обрабатывать команды РНР, были созданы практически для всех операционных систем, от Windows до Unix и Linux.

В 2000-м году вышла разработанная компанией Zend Technologies четвертая версия интерпретатора РНР, дополненная множеством новых функций.

В настоящее время именно она является наиболее распространенной - РНР используется более чем на 20% сайтов Сети. Сейчас готова и проходит апробацию уже пятая версия данного языка.

Синтаксис PHP

Синтаксис PHP во многом заимствован из таких языков как C, Java и Perl. Файл, обрабатываемый сервером как правило имеет расширение php.

Поэтому, если вы знакомы хотя бы с одним из них - вам не составит особого труда просто сесть и начать писать программы на PHP.

PHP-код включаются в html-код в следующем виде:

<?PHP  текст_кода  ?>
 
или
 
<?
  текст_кода;
?>

Коментарии

PHP поддерживает комментарии 'C', 'C++' и оболочки Unix. Например:

<?php echo "This is a test"; // Это однострочный комментарий в стиле c++
 
/* Это многострочный комментарий,
это ещё одна его строка */
 
echo "This is yet another test"; echo "One Final Test";
# Это комментарий в shell-стиле ?>

echo

<?php echo "Эта информация будет выведена в HTML";?>

Присвоение значений переменным

Переменные в программах на PHP, отделяются символами $.

$city = "Tula";

city - переменная

Tula - значение

Некоторые операции

инкремента/декремента;
++$a Pre-increment Увеличивает $a на 1,затем возвращает $a.
$a++ Post-increment Возвращает $a, затем увеличивает $a на 1.
--$a Pre-decrement Уменьшает $a на 1, затем возвращает $a.
$a-- Post-decrement Возвращает $a, затем уменьшает $a на 1.
 
арифметические:
$a + $b Сложение Сумма $a и $b.
$a - $b Вычитание Разность $a и $b.
$a * $b Умножение Произведение $a и $b.
$a / $b Деление Частное от деления $a на $b.
$a % $b Modulus Целочисленный остаток от деления $a на $b.
 
строковые:
Имеются две строковые операции. Первая - операция ('.'), которая
возвращает объединение из правого и левого аргументов. Вторая -
операция присвоения ('.='), которая присоединяет правый аргумент в
левому аргументу.
 
$a = "Hello "; $b = $a . "World!"; // теперь $b содержит "Hello World!"
$a = "Hello "; $a .= "World!"; // теперь $a содержит "Hello World!"

Выражения сравнения

Выражения сравнения вычисляются в 0 или 1, означая FALSE или TRUE (соответственно).

PHP поддерживает
> (больше),
>= (больше или равно),
== (равно),
!= (не равно),
< (меньше) и <= (меньше или равно).

Эти выражения чаще всего используются внутри условных операторов, таких как if.

сравнения:

$a == $b равно TRUE, если $a равно $b.
$a != $b не равно TRUE, если $a не равно $b.
$a <> $b не равно TRUE, если $a не равно $b.
$a < $b меньше TRUE, если $a строго меньше $b.
$a > $b больше TRUE, если $a строго больше $b.
$a <= $b меньше или равно TRUE, если $a меньше или равно $b.
$a >= $b больше или равно TRUE, если $a больше или равно $b.

Некоторые операторы

include "имя файла"

- команда для включения содержимого одного файла в другой. Содержимое файла, имя которого указывается в команде, целиком и полностью вставляется на то место, где располагается эта команда, при этом все коды РНР, содержащиеся во вставляемом файле, исполняются так же, как если бы они были на месте этой команды. (Помните, что файл именно вставляется - т. е., например, пути к картинкам, которые должны присутствовать во вставляемом файле, следует указывать от местонахождения того файла, в котором находилась команда include.) Если файл, включаемый в страницу при помощи команды include, отсутствует, то вместо него размещается уведомление об этом, а программа на РНР выполняется дальше. (При необходимости завершения обработки и выдачи web-страницы в случае отсутствия включаемого файла, вместо команды include следует использовать команду require.)

mail ("Кому", "Тема", "Текст сообщения", "Дополнительные заголовки")

- отправка почтового сообщения. При выполнении данной команды на сервере в соответствии с указанными параметрами формируется электронное письмо и отправляется с помощью установленной на сервере почтовой программы. В качестве параметра "Кому" может выступать набор адресов, разделенных запятыми. "Дополнительные заголовки" могут быть любые (естественно, допустимые почтовыми протоколами!), разделяться они должны должны комбинацией символов /n, которая в РНР означает перевод строки. (Если среди "Дополнительных заголовков" не указано поле From, то оно заполняется по умолчанию почтовой программой web-сервера, например, именем "Unprivileged User".)

echo ("текст")

- вывод на web-страницу какого-либо текста. Чтобы вывести на web-страницу значение какой-либо переменной, достаточно просто написать ее имя внутри выводимой строки: команда echo "это цифра $а" выведет в web-страницу текст "это цифра 1", если ранее переменной $а было присвоено значение, равное единице. В случае необходимости использовать в выводимой строке кавычки или иные специальные символы перед этими символами следует ставить символ " .

if (условие) {...команды, которые должны выполняться, если условие верно...;} else {...команды, которые должны выполняться, если условие неверно...}

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

for (начальное значение счетчика, условие продолжения цикла, изменение счетчика на каждом цикле) { ...команды... ;}

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

while (условие) { ...команды... }

- цикл с условием. Команды в фигурных скобках выполняются до тех пор, пока выполняется условие в заголовке цикла. Для того чтобы цикл прервался, нужно, чтобы условие выполняться перестало - поэтому внутри цикла необходимо предусмотреть возможность влиять на это условие.

Цикл do {. . .команды. . . } while (условие)

работает так же, однако команды, указанные в фигурных скобках, будут выполнены по меньшей мере один раз - даже если условие выполняться не будет. Прервать выполнение любого цикла можно оператором break -дальнейшее выполнение программы пойдет с команды, следующей после закрывающей фигурной скобки. Оператор же continue прерывает текущую стадию выполнения цикла, т. е. после этого оператора дальнейшее выполнение программы начнется с очередной проверки условия заголовка цикла.

switch (выражение) {case значение: ... команды...; break; case другое значение: ... команды...; break;}

- оператор выбора. При его работе содержимое, заключённое в фигурные скобки, просматривается сверху вниз. Как только будет найден оператор case со значением, совпадающим со значением выражения, РНР начнёт выполнять весь код, следующий за этим оператором case до последней фигурной скобки оператора switch или до первого оператора break, в зависимости от того, что появится раньше. (Обратите внимание, что если команду break не указать в конце кода, относящегося к одному варианту значения выражения в заголовке оператора switch, PHP будет выполнять код дальше - т. е. тот, который принадлежит уже следующему оператору case! Это - одно из отличий данного оператора от аналогичных в других языках программирования.) В конце оператора switch можно указать оператор default. Код, стоящий после него, выполнится в том случае, если значение выражения в заголовке оператора не совпадет ни с одним из значений после операторов case.

foreach (переменная as массив) { . . .команды. .. ;}

- поочередное считывание всех элементов массива. Foreach считывает в указанную в его параметрах переменную поочередно все элементы указанного в них же массива, выполняя каждый раз указанный в фигурных скобках код, в котором может использоваться указанная переменная. (Значения элементов массива этим оператором только считываются, их модификация при помощи команды foreach невозможна.)

Оператор foreach может быть использован только в РНР версии 4.0 и выше.

Программа на РНР может прерываться кодом web-страницы - для этого достаточно вставить закрывающий тэг до этого кода и открывающий - после. Все, что находится между ними, будет выдаваться в браузер без какой-либо обработки, рассматриваясь как выводимое с помощью команды echo. Иными словами, код

<?php if ($a==l) { ?><р>Переменная а равна 1</p><?php> }?>
 
эквивалентен коду
 
<?php if ($a==l) {echo "<p> Переменная а равна 1</p>";}?>

Однако, первый вариант меньше нагружает процессор компьютера, на котором расположен интерпретатор РНР. Из сказанного также следует, что все программы на РНР, расположенные на одной web-странице, представляют собой одну большую программу, несмотря на то, что они разделяются блоками обычного текста страницы. Именно поэтому переменная, объявленная в расположенном в начале страницы коде, сохраняет свое значение не только до ее конца, но и во всех присоединяемых с помощью команды include файлах.

Пример

Image img1001

Figure: Пример php.

Задания на лабораторную работу

  1. Создайте отдельную страницу, на которой будут размещаться ссылки на php cкрипты.
  2. Реализуйте указанный пример, выясните его принцип работы.
  3. Получите информацию о настройках php с помощью команды phpinfo();.
  4. Создайте php-скрипт, который создает страницу "Hello World!!!";.
  5. Создайте php-скрипт, который загружает в web-страницу файл с информацией о разработчике.
  6. Создайте php-скрипт, который создает страницу с таблицей возможных цветов HTML.
  7. Создайте php-скрипт, который формирует web-страницу с таблицей умножения.

Перейти на Главную


<<НАЗАД