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 походит на классический С (или лучше сказать на 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 .." %>
Существенным отличием 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(), преобразующая в строке символы типа & в последовательность & или функция 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-серверу на получение или изменение данных). При выполнении запроса создается некий объект, в котором хранится результат выполнения запроса, после чего можно получать отдельные ряды, путем выполнения специальных функций.
Начало создания курса: Mondy, 19-Aug-1996 10:12:15 NOVST
Дата последней модификации: Wednesday, 17-May-2000 13:16:35 NOVST
© 1996 - 2003, А.М.Федотов
© 1996 - 2003, Институт вычислительных технологий СО РАН, Новосибирск