PHP - Препроцессор гипертекстового протокола

Содержание

Введение

PHP (officially "PHP: Hypertext Preprocessor") - это система разработки (WEB приложений) для WEB сервера Apache - скриптовый язык, обрабатывающийся на стороне сервера, команды которого включаются непосредственно в текст HTML документа (server-side HTML-embedded scripting language).

PHP включает в себя CGI - интерфейс, интерпретатор языка и набор функций для доступа к базам данных и различным объектам на WWW сервере. На данный момент PHP является наиболее удобным и мощным (и достаточно популярным) средством разработки приложений WEB, включая разработку приложений связи с базами данных и построением полнофункциональных информационных систем в Интернет.

В настоящий момент используется язык и система PHP версии 3 (PHP3), но уже на стадии выхода в свет версия PHP4 (см. информацию на головном сервере PHP).

Система PHP устанавливается на Web-сервер в качестве отдельного модуля обработки (Server Parsed Document) определенного mime-типа ресурса, аналогично модулю SSI (Server Side Include) (см. настройки сервера).

PHP подобно client-side JavaScript представляет собой HTML документ с вставками команд языка PHP (точно так же как это делается в ASP технологии сервера MS IIS - только не ясно, кто предложил такую технологию раньше).

Пример:

<html>
    <head>
        <title>Example</title>
    </head>
    <body>
        <?php echo "Hi, I'm a PHP script!"; ?>
    </body>
</html>
Благодаря этому, создание и отладка WEB приложений, использующих PHP технологию значительно проще, чем отладка и создание приложений на других языках (например C или Perl - если не принимать во внимания систему Mod_Perl сервера Apache).

Язык PHP, является С-подобным языком программирования, содержащим помимо основных конструкций языка функции обработки регулярных выражений (подобно Perl'у), поддержки библиотек классов, а так же обладает значительным набором стандартных функций и относительно большой гибкостью, что обеспечивает разработчику большие возможности при разработке WEB приложений.

Синтаксис PHP

По своему синтаксису язык PHP походит на классический С (или лучше сказать на Perl), хотя видны некоторые заимствования из Java. В PHP есть практически все операторы и функции, имеющиеся в стандартном GNU С (или их аналоги), например есть циклы (while, for), операторы выбора (if, switch), функции работы с файловой системой и процессами (fopen, *dir, stat, unlink, popen, exec), функции ввода-вывода (file, fgets, fputs, print*) и множество других.

Вставка команд PHP в HTML документ происходит после включения "PHP code mode":

Пример:

1.  <? echo ("this is the simplest, an SGML processing instruction\n"); ?>
 
2.  <?php echo("if you want to serve XML documents, do like this\n"); ?>

3.  <script language="php"> 
        echo ("some editors (like FrontPage) don't
              like processing instructions");
    </script>

4.  <% echo ("You may optionally use ASP-style tags"); %>
    <%= $variable; # This is a shortcut for "<%echo .." %>
Четвертый способ не является стандартным и работает только в случае когда при конфигурации интерпретатора было включено использование ASP-style tags.

Возможности языка

Существенным отличием PHP от C - является использование переменных, которое построено по аналогии с языком Perl. Конечно по набору разнообразных функций обработки текстов (или строк) PHP уступает Perl'у, хотя трудно найти ситуацию, в которой Вам будет не хватать мощи языка Perl.

В языке PHP отсутствует обязательная типизация переменных, хотя в некоторых случаях типизация может присутствовать. Тип переменной в каждом конкретном операторе зависит от контекста (если он не предопределен заранее), например переменная $str="10"; при использовании ее в операторе echo $str; будет иметь строковый тип, а в выражении типа $str=$str+1; будет преобразована в числовой.

Эта особенность PHP имеет свой смысл, связанный с обработкой результатов ввода HTML форм. В этом случае трудно определить первоначальный тип переменной, а с другой строны преобразования типов можно, если это не вызывает разночтений, можно поручить интерпретатору PHP.

Другой удобной возможностью PHP (что выгодно отличает его от Perl'a и ASP) является автоматический перенос переменных окружения и параметров HTML форм в переменные PHP, причем отпадает необходимость перевода URL-кодированных значений переменных в нормальные (что особенно важно для русскоязычных страниц), например при передаче скрипту параметра str=text%20with%20spaces по методу GET

GET /some_script.php?str=text%20with%20spaces HTTP/1.0
будет образована переменная $str="text with spaces";.

PHP имеет целый ряд встроенных функций для обработки объектов самого различного рода (см. PHP 3.0 Functions). Наиболее важными и часто используемыми являются функции обработки строк и регулярных выражений, функции работы с файлами и процессами и функции-драйверы работы с базами данных.

Ниже приводится несколько примеров использования функций языка PHP для построения WEB приложений.

Обработка строк

Работа со строками в PHP гораздо богаче, чем в С, хотя и беднее, чем в Perl'е, но этого вполне достаточно для написания большинства WEB ориентированных программ обработки текстов (чем трудно похвастаться VBasic, который лежит в основе ASP). В языке существуют практически все стандартные функции языка С, а так же наличиствует множество дополнительных функций и возможностей (которые в каком-то смысле являются подмножеством языка Perl), ориентированные на WEB приложения.

В частности конкатенация строк может осуществляется следующими операторами:

$result_str=$first_str."".$second_str;
или
$result_str="$first_str$second_str";

В качестве примеров полезных для работы в WEB функций могут служить функции htmlspecialchars(), преобразующая в строке символы типа & в последовательность &amp; или функция urlencode(string str) преобразующая символы расширенной кодовой таблицы (например, содержащие символы русского алфавита) в последовательность %XX, где ХХ - шестнадцатеричный код символа. Очень важны, с точки зрения обработки запросов пользователя функции работы с регулярными выражениями, например, в результате работы оператора

$str = ereg_replace("/usr/local/([^/]*)/filename","\\1",
                    "/usr/local/dirname/filename");
мы получим строку
$str="dirname";
Или функции explode и split преобразования строк в массив значений (как в Perl'e).

В качестве примера использования языка PHP3 приведем программу формирования следующего элемента выбора:

которая имеет следующий вид:

<?php
$Sa=explode(" ","Первый Второй Третий Четвертый Пятый");
echo "<select name=\"dayofweek\" size=\"1\">\n";
for($i=0;$i<count($Sa);$i++) {
echo "<option>".$Sa[$i]."</option>"\n";
};
echo "</select>\n";
?>

Работа с файлами и процессами

Работа с файлами в PHP практически ничем не отличается от работы с файлами в С, те-же самые функции работы с потоками или с блоковыми файлами: fopen, fclose, fread, fgets, fputs, fwrite, но есть одна маленькая, но очень приятная возможность работать с файлами по их URL адресам, например возможны следующие конструкции:

$line_string = file("http://www.ict.nsc.ru/welcome.html");
$fp = fopen("http://www.ict.nsc.ru/robot.txt", "r");
$fp = fopen( "ftp://ftp.ict.nsc.ru/CPAN/.listing", "r");
В первой конструкции в массив $line_string записывается текстовый файл (text/html) welcome.html, во втором и третьем случаях открывается дескриптор файла $fp (файл открывается на чтение).

В PHP имеется возможность использовать другие программы, используя командный интерпретатор UNIX'а, например для получения списка текущей директории использовать стандартную команду ls, или отправлять почту с помощью sendmail (хотя проще это делать, используя стандартную функцию PHP mail.

PHP позволяет создать процесс, и работать с его стандартным вводом или стандартным выводом как с обычным потоком: команда popen, например

$fp=popen("/bin/ls -l","r");

Работа с базами данных

В системе PHP работа с БД осуществляется в основном путем работы с различными SQL-серверами. В настоящий момент в библиотеке стандартных функций PHP содержатся драйвера ко всем наиболее распространенным СУБД (например, Oracle, Informix, syBase, PostgreSQL, MySql, MS SQL и много других -более 20). SQL-сервер в любом случае рассматривается как удаленный, то есть создается сетевое соединение. Благодаря этому возможно открывать из одного скрипта либо несколько пользовательских сессий, либо работать с различными SQL-серверами. После установки соединения с сервером, выбирается рабочая база данных, после чего можно отправлять и обрабатывать запросы (так как SQL является клиент-серверной архитектурой, любая работа с данными осуществляется с помощью запросов к SQL-серверу на получение или изменение данных). При выполнении запроса создается некий объект, в котором хранится результат выполнения запроса, после чего можно получать отдельные ряды, путем выполнения специальных функций.


ИВТ Федотов А.М. Введение в Internet
Документация по Интернет технологиям

Начало создания курса: Mondy, 19-Aug-1996 10:12:15 NOVST
Дата последней модификации: Wednesday, 17-May-2000 13:16:35 NOVST
© 1996 - 2003, А.М.Федотов
© 1996 - 2003, Институт вычислительных технологий СО РАН, Новосибирск