Материал взят из журнала: PHP Inside
Автор: Maxim Matyukhin
Данная статья была написана с целью
популяризации PEAR-классов среди
php-программистов. Я постарался собрать
здесь простые примеры того, как pear
может
упростить и ускорить написание скриптов
на PHP.
Пару слов о PEAR.
PEAR - это набор классов, написанных на
PHP. Сейчас он содержит около 100
классов. Это число могло быть больше, но
у pear-сообщества жесткие требования
к чистоте и стилю оформления
программного кода.
Официальный сайт pear:
Далее я просто покажу несколько примеров
использования pear-классов.
1. HTML::Select ()
Данный класс позволяет генерировать
SELECT-поля для форм. Вот наиболее
типичный пример его использования:
// хеш-массив значений 'текст' => 'значение'
$values = array(
'value1'=>'1',
'value 2' => '2',
'value 3'=>'3');
$selected = '2'; // поле со значением '2' сделаем
//выделенным
// подключаем класс
require_once('HTML/Select.php');
// создаем экземпляр класса
$select = & new HTML_Select('select_field');
// загружаем данные, из которых будет
//генерироваться SELECT-поле
$select->loadArray($values, array($selected));
echo $select->toHtml(); // выводи HTML-код
?>
Это наиболее общий пример использования
класса HTML::Select.
Конструктор в качестве параметра
принимает имя поля (атрибут name тега
SELECT)
Метод loadArray() принимает массив
данных, из которых строится тег SELECT
и массив значений, которые нужно
выделить.
Результатом выполнения данного кода
будет такой HTML:
Класс также позволяет строить SELECT-
поля на основе данных из базы. Для этого
можно использовать метод loadQuery:
// подключаем класс
require_once('HTML/Select.php');
// создаем экземпляр класса
$select = & new
HTML_Select('select_field');
$sql = 'SELECT id, title FROM tab_name';
$select->loadQuery($db, $sql, 'title', 'id');
echo $select->toHtml();
?>
Метод loadQuery() в качестве первого
параметра принимает ссылку на
экземпляр класса pear::DB или dsn-строку
для создания такого объекта
(подробности ищите в документации к
pear::DB).
С недавнего времени появился еще набор
классов с названием
HTML_Select_Common
().
Этот набор классов позволяет просто
создавать SELECT-поля со списком стран,
штатов США и т.п.
Вот как выглядит создание тега SELECT
со списком стран:
require_once('HTML/Select/Common/Country.php');
$country = new HTML_Select_Common_Country();
echo $country->toHtml('country', 'ru');
?>
Данный пример создаст SELECT-тег со
списком стран и выделит в нем Россию.
Вот пример создания списка штатов
США:
require_once('HTML/Select/Common/USState.php');
$state = new HTML_Select_Common_USState();
echo $state->toHtml('state');
?>
2. HTTP::Download
()
Данный класс позволяет создавать
скрипты для скачивания файлов с
поддержкой докачки. Можно
организовать как скачивание файла из
файловой системы,
так и скачивание файла, записанного в
базу данных. Вот самый простой пример
использования (взят из документации):
Те, кто сидят на форумах, наверное уже
привыкли к BB-кодам, которые
используются для оформления сообщений
в форуме (например в phpBB, VBulletin и
т.п).
Данный класс позволяет преобразовать
текст с BB-кодом в HTML-код:
require_once('HTML/BBCodeParser.php');
$text = '[b] Всем Привет [/b]
[i]Люди, как работать с pear-классами ? [/i]';
echo $text =
HTML_BBCodeParser::staticQparse($text);
?>
Если выполнить этот пример, то
получите такой результат:
Всем Привет Люди, как работать с pear-классами ?
По умолчанию, этот класс обрабатывает
следующие BB-коды:
- [b], [i], [u], [s], [sup], [sub]
Но класс также позволяет подключить
подсветку e-mail, создание ссылок,
изображений, списков и т.д. В архиве с
классом идет пример, который
показывает, как использовать все эти
возможности.
4. HTML_Crypt
().
Мне этот класс показался
оригинальным, поэтому я включил его в
обзор.
Этот класс позволяет зашифровать
строку на PHP, которую в последствии
можно будет расшифровать
Яваскриптом на стороне клиента. В
основном этот класс применяется для
шифрования e-mail от
спамерских роботов:
require_once('HTML/Crypt.php');
$c = new HTML_Crypt();
$c->obStart();
echo " Это пример использования класса
HTML_Crypt, автор которого
Michael
Dransfield ";
echo "Комментарии к статье шлите на
max@webscri
pt.ru";
$c->obEnd();
?>
Результатом будет такой HTML-код
(листинг 1):
Листинг 1
Это пример использования класса HTML_Crypt, автор которого
Комментарии к статье шлите на
Отступы я расставил сам (на самом деле
весь js-код выводится в одну строку).
Если вы откроете этот HTML-код в
броузере, то там увидите нормальный email.
5. HTML::treeMenu
()
Один из моих любимых классов :-)
Позволяет строить древовидные
DHTML-меню. Если броузер не
поддерживает работу
со слоями, то в нем просто будет
выведено раскрытое дерево. Пример
создания меню приведен в листинге 2.
Пример взят из документации, правда, я
его немножко упростил, чтобы не
испугать новичков.
6. Archive::Tar
()
Данный класс позволяет создавать
архивы типа .tar.gz. Многие, наверное,
сталкивались с проблемой, что с
помощью расширения ZLib
нельзя заархивировать несколько файлов
в один архив. Данный класс решает
данную проблему. Вот типичный пример
использования класса:
include_once("Archive/Tar.php");
$tar = & new Archive_Tar("archive.tar.gz", true);
$tar->create("/dir/to/archive/"); // добавляем каталог со
//всеми его файлами в архив
$tar->add('file.txt'); // добавляем файл в архив
?>
Данный код создает архив archive.tar.gz,
добавляет в него содержимое каталога
/dir/to/archive/ и файл file.txt .
Класса для работы с zip-архивом пока нет.
Но, насколько мне известно, он пишется.
7. MP3::ID
()
Так как часто на форумах спрашивают,
как определить параметры MP3-файла,
решил включить этот класс в обзор.
MP3::ID позволяет читать и писать ID3-
теги MP3-файла.