PHP - система разработки скриптов
или как написать скрипт с использованием базы данных за 20 мин.
Содержание
1. Введение
1.1. Создание скриптов на
PHP. 1.2. Синтаксис
PHP. 1.3. Переменные в
PHP. 2. Возможности
языка. 2.1. Обработка
строк. 2.2. Работа с файлами и
процессами. 2.3. Работа с базами
данных. 3. Использование
PHP.
Прежде всего, ответим
на вопрос: что же такое PHP? PHP - это система разработки скриптов,
включающая в себя CGI - интерфейс, интерпретатор языка и набор
функций для доступа к базам данных и различным объектам WWW. По
личному мнению автора этой статьи, на данный момент PHP является
наиболее удобным и мощным средством разработки приложений WWW и
интерфесов к БД в Интернет.
Система PHP
устанавливается на Web-сервер в качестве обработчика определенного
mime - типа, аналогично системе SSI (Server Side Include), то есть
PHP-скрипт представляет собой обычный html-документ с редкими (или
не очень :) вставками тэгов PHP - комманд. Благодаря этому, создание
и отладка скриптов PHP значительно проще, чем отладка и создание
скриптов на других языках (например C или
Perl). Вместе с тем, PHP обеспечивает
разработчику очень большие возможности при разработке приложений web
или активных страниц, так как облдает значительным набором функций и
относительно большой гибкостью.
По своему синтаксису
язык PHP наиболее походит на классический С, хотя видны и некоторые
заимствования из Java и Perl. По крайней мере, программист на С
очень быстро освоит данный язык и сможет использовать его с
максимальной эффективностью. В принципе, в
PHP есть практически все операторы и функции, имеющиеся в
стандартном GNU С (или их аналоги), например есть циклы (while,
for), операторы выбора (if, switch), функции работы с файловой
системой и процессами (fopen, *dir, stat, unlink, popen, exec),
функции ввода-вывода (fgets,fputs,printf) и множество
других... Одним из самых больших отличий PHP
от C - является использование переменных.
Первое, что бросается в
глаза при использовании PHP - это отсутствие типизированных
переменных, хотя некая типизация и присутствует, но тип переменной в
каждом конкретном операторе зависит от контекста, например
переменная $str="10" при использовании ее
в операторе echo($str) будет иметь
строковый тип (да, да, про char * можно
забыть), а в выражениии типа $str=$str+1
будет обрабатываться как число. Хотя это
может показаться недостатком, данная особенность PHP имеет свой
смысл, так как при обработке результатов форм ввода html очень
трудно определить первоначальный тип переменной, и кроме того, все
перобразования типов можно свалить на php (и забыть про
itoa и
atoi). Также одной
из интересных возможностей PHP является автоматический перенос
переменных окружения и параметров скрипта в переменные PHP, причем
отпадает необходимость перевода URL-кодированных значений переменных
в нормальные, например при передаче скрипту параметра
str=text%20with%20spaces ( запрос типа GET
/some_script.php?str=text%20with%20spaces HTTP/1.0 ) будет
образована переменная $str="text with spaces".
PHP имеет целый ряд
встроенных функций для обработки объектов самого различного рода. (
PHP 3.0 Functions
reference ) Для примера мы вкратце рассмотрим следующие
разделы, наиболее важные с моей точки зрения
: 2.1. Обработка
строк; 2.2. Работа с файлами и
процессами; 2.3. Работа с базами
данных;
Работа со строками в
php гораздо богаче, чем в С. Кроме того, что существуют практически
все стандартные функции языка С, наличиствует множество
дополнительных функций и возможностей, которые как ориентированы на
web, так и просто облегчают работу. В частности конкатенация строк
осуществляется следующим оператором:
$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, лично меня очень порадовшая:
данная функция позволяет преобразовать строку в массив значений,
например для формирования следующего элемента выбора
Понедельник Вторник
Среда Четверг
Пятница Суббота
Воскресенье
был использован следующий код:
<?php
$strarray=explode(":","Понедельник:Вторник:Среда:Четверг:Пятница:Суббота:Воскресенье");
?> <select
name="dayofweek" size="1">
<?php for($i=0;$i<7;$i++) {
?>
<option>
<?php echo($strarray[$i]);
?>
</option>
<?php }
?>
</select>
Работа с файлами в PHP
практически ничем не отличается от работы с файлами в С, те-же
самые функции работы с потоками или с блоковыми файлами, fopen,
fclose, fread, fgets, fputs, fwrite, но есть одна маленькая, но
очень приятная возможность работать с файлами по их URL, например
возможны следующие конструкты :
$fp = fopen( "http://www.soft.ru/", "r" ); $fp
= fopen( "ftp://www.soft.ru/", "r" );
И, одной из самых больших прелестей PHP, по моему
мнению является возможность использовать другие программы, например
для получения списка текущей директории использовать стандартную
команду ls, или отправлять почту с помощью
sendmail. Это достигается с помощью того,
что php позволяет создать процесс, и работать с его стандартным
вводом или стандартным выводом как с обычным потоком. (команда
popen, например
$fp=popen("/bin/ls -l","r"); ).
В системе PHP работа с
БД осуществляется в основном путем работы с различными
SQL-серверами, причем SQL-сервер в любом случае рассматривается как
удаленный, то есть создается сетевое соединение. Благодаря этому
возможно открывать из одного скрипта либо несколько пользовательских
сессий, либо работать с различными SQL-серверами. После установки
соединения с сервером, выбирается рабочая база данных, после чего
можно отправлять и обратывать запросы (так как SQL является
клиент-серверной архитектурой, любая работа с данными осуществляется
с помощью запросов к SQL-серверу на получение или изменение данных).
При выполнении запроса создается некий объект, в котором хранится
результат выполнения запроса, после чего можно получать отдельные
ряды, путем выполнения специальных функций. Если вы когда-нибудь
работали с SQL - вы очень быстро разберетесь с использованием
функций работы БД в PHP.
В качестве примера, приведем код, который
производит выборку из простейшей таблицы, содержащей номера
телефонов и наимонования компаний. В результате работы кода
получилось следующее:
Название фирмы
Телефон
контора Купи-продай |
222-33-44 |
ГлавСовСнаб |
333-44-55 |
MuSt DiE |
444-55-66 |
А сформирована дання таблица была
следующим php - кодом:
<!-- Начало
таблицы --> <table width="50%"
border="1" cellspacing="0" cellpadding="0"
align="CENTER"> <tr>
<th width="75%">Название фирмы</th>
<th width="25%">Телефон</th>
</tr> <script
language="php"> $sock=msql_connect
("localhost"); //Соединяемся с SQL -
сервером msql_select_db( "test",$sock);
//Выбираем БД
$R=msql_query(
"select * from db",$sock); //Делаем запрос
$T=msql_fetch_array($R);
//Получаем первый
ряд из результата выполнения
запроса while (is_array($T)) {
//Пока есть ряды
в запросе (т.е. $T -
массив) </script>
<tr> <td>
<?php echo
$T[name]; //Распечатываем поле name
из текущего ряда
?></td> <td
align="center"> <?php echo $T[phone];
//Распечатываем поле phone
из текущего ряда ?></td> </tr>
<?php $T=msql_fetch_array($R);
// Считываем
следующий ряд ?> <?php }
// Конец цикла
while ?>
</table> <!-- Конец
таблицы -->
Итак, постепенно мы
приходим к следующему выводу: использование PHP целесообразно при
создании часто обновляемых либо громоздких в написании программ,
скорость выполнения для которых не является критическим параметром
(имеется в виду, что если разница между временем выполнения скрипта
на С и скрипта на PHP составляет 10-20%, то вполне можно предпочесть
скорость разработки скорости выполнения) и необходимо быстрое
создание полнофункционального приложения. (если интересно мое личное
мнение то кроме PHP я использую только C, и то, очень
редко.)
|