Web - кодинг: PHP:


Примеры использования PEAR



  Материал взят из журнала: 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 name="select_field" size="1"> <option value="1">value1</option> <option value="2" selected="selected">value 2</option> <option value="3">value 3</option> </select>
Класс также позволяет строить 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 ()

Данный класс позволяет создавать скрипты для скачивания файлов с поддержкой докачки. Можно организовать как скачивание файла из файловой системы, так и скачивание файла, записанного в базу данных. Вот самый простой пример использования (взят из документации):

<? require_once('HTTP/Download.php'); $params = array( 'file' => '../hidden/download.tgz', 'contenttype' => 'application/x-gzip', 'contentdisposition' => array(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz')); $error = HTTP_Download::staticSend($params, false); ?>
Докачка будет организована автоматически.

3. HTML::BBCodeParser ()

Те, кто сидят на форумах, наверное уже привыкли к BB-кодам, которые используются для оформления сообщений в форуме (например в phpBB, VBulletin и т.п).

Данный класс позволяет преобразовать текст с BB-кодом в HTML-код:

<? require_once('HTML/BBCodeParser.php'); $text = '[b] Всем Привет [/b] [i]Люди, как работать с pear-классами ? [/i]'; echo $text = HTML_BBCodeParser::staticQparse($text); ?>
Если выполнить этот пример, то получите такой результат:

<b> Всем Привет </b> <i>Люди, как работать с pear-классами ? </i>
По умолчанию, этот класс обрабатывает следующие 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, автор которого <a href=\"mailto:mike@blueroot.net\">Michael Dransfield</a><br>"; echo "Комментарии к статье шлите на <a href=\"mailto:max@webscript.ru\">max@webscri pt.ru</a>"; $c->obEnd(); ?>
Результатом будет такой HTML-код (листинг 1):

Листинг 1

Это пример использования класса HTML_Crypt, автор которого <script language="JavaScript" type="text/JavaScript"> var a,s,n; function ja4fc707c63aa221b5326b8c0cb348e87(s){ r=''; for(i=0;i<s.length;i++){ n=s.charCodeAt(i); if(n>=8364){n=128;} r+=String.fromCharCode(n-3); } return r; } a='?d#kuhi@%pdlowr=plnhCeoxhurrw1qhw%APlfkdho#Gudqvilhog?2dA'; document.write (ja4fc707c63aa221b5326b8c0cb348e87(a)); </script> <br>Комментарии к статье шлите на <script language="JavaScript" type="text/JavaScript"> var a,s,n; function da4fc707c63aa221b5326b8c0cb348e87(s) { r=''; for(i=0;i<s.length;i++){ n=s.charCodeAt(i); if(n>=8364){n=128;} r+=String.fromCharCode(n-3); } return r; } a='?d#kuhi@%pdlowr=pd{Czhevfulsw1ux%Apd{Czhevfulsw1ux?2dA'; document.write (da4fc707c63aa221b5326b8c0cb348e87(a)); </script>

Отступы я расставил сам (на самом деле весь js-код выводится в одну строку). Если вы откроете этот HTML-код в броузере, то там увидите нормальный email.

5. HTML::treeMenu ()

Один из моих любимых классов :-) Позволяет строить древовидные DHTML-меню. Если броузер не поддерживает работу со слоями, то в нем просто будет выведено раскрытое дерево. Пример создания меню приведен в листинге 2.

Листинг 2

<?php require_once('HTML/TreeMenu.php'); $icon = 'folder.gif'; $expandedIcon = 'folder-expanded.gif'; $menu = new HTML_TreeMenu(); $node1 = new HTML_TreeNode(array( 'text' => "First level", 'link' => "test.php", 'icon'=>$icon)); $node1_1 = &$node1->addItem(new HTML_TreeNode(array( 'text' => "Second level", 'link' => "test.php", 'icon'=>$icon))); $node1_1_1 = &$node1_1->addItem(new HTML_TreeNode(array( 'text' => "Third level", 'link' => "test.php", 'icon'=>$icon))); $node1_1_1_1 = &$node1_1_1->addItem(new HTML_TreeNode(array( 'text' => "Fourth level", 'link' => "test.php", 'icon'=>$icon))); $node1_1_1_1->addItem(new HTML_TreeNode(array( 'text' => "Fifth level", 'link' => "test.php", 'icon'=>$icon))); $node1->addItem(new HTML_TreeNode(array( 'text' => "Second level, item 2", 'link' => "test.php", 'icon'=>$icon))); $node1->addItem(new HTML_TreeNode(array( 'text' => "Second level, item 3", 'link' => "test.php", 'icon'=>$icon))); $menu->addItem($node1); $menu->addItem($node1); // Create the presentation class $options = array('images' => './images'); $treeMenu = &new HTML_TreeMenu_DHTML($menu, $options); ?> <html> <head> <script src="TreeMenu.js" language="JavaScript"></script> </head> <body> <?$treeMenu->printMenu()?>

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

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-файла.

Вот пример использования:

<? require_once("MP3/Id.php"); $file = "Triplex_Brigada.mp3"; $id3 = &new MP3_Id(); $id3->read($file); echo 'Artist : '.$id3->getTag('artists'); echo 'Name: '.$id3->getTag('name'); ?>

Ну вот и все. На первый раз, думаю, достаточно.

Ссылки по теме:
- Официальный сайт PEAR.
- очень полезная конференция по pear





При перепечатке любого материала с сайта, видимая ссылка на источник www.warayg.narod.ru и все имена, ссылки авторов обязательны.

© 2005