27.7. Структура приложений
Если принять разработку приложений за следующий логический уровень, то структура приложений является попыткой организовать компоненты, которые можно использовать повторно для разработки приложений. За счет гибкости и производительности мы получаем большую библиотеку готовых компонентов, и это позволяет быстро разрабатывать новые приложения.
Проект BinaryCloud <http://www.binarycloud.com/> представляет собой среду создания приложений на PHP, предназначенных для создания решений промышленного уровня. Сопровождают этот проект Алекс Блек (Alex Black) и его компания Turing Studio. Этот проект базируется на своих собственных исходных файлах, которые компилируются в PHP-сценарии. Для этого здесь используется механизм шаблонов Smarty, который обсуждался выше в этой главе. Исходный код доступен под лицензией GNU.
Другим подходом к разработке Web-узлов с помощью PHP является проект Midgard (<http://www.midgard-project.org/>). Его разработчиками являются Юкка Зиттинг (Jukka Zitting) и Генри Бергиус (Henri Bergius). Кроме предложения решения на PHP, они пытаются интегрировать PHP в свой собственный сервер приложений. Проект Midgard имеет возможность организовать более 800000 страниц содержимого с использованием интерфейса, основанного на Internet. По этой причине он является идеальным для работающих Internet-магазинов.
Конечно, Midgard является открытым проектом и позволяет загружать собственные сообщения или собственные результаты с помощью системы CVS. Доступны также и двоичные загрузки.
Проект Ariadne представляет собой структуру Web-приложений от голландского конструкторского агентства Muze. Он доступен под открытой лицензией GNU. Этот проект ведет Аук ван Слоотен (Auke van Slooten). Исходный код можно загрузить с Web-узла Muze по адресу <http://www.muze.nl/software/ariadne/>.
Ariadne хранит исходный код PHP в виде объектов в базе данных MySQL. Эти объекты взаимодействуют друг с другом через виртуальную файловую систему. С помощью Web-страниц в распоряжение пользователя предоставляется богатый пользовательский интерфейс, но опытные разработчики могут пойти и дальше. Есть компонент, контролирующий права доступа к Web-узлу пользователей или групп.
Проект Horde (<http://www.horde.org/>) является структурой приложения, используемой для работы с популярным почтовым клиентом IMP, написанным на PHP. Задумал и реализовал этот проект Чак Хейгенбах (Chuck Hagenbuch). Сейчас этот проект сопровождает Эрик Ростеттер (Eric Rostetter). Проект доступен под лицензией GNU. Эта структура использует исходные коды приложения IMP. Его преимущество заключается в том, что он позволяет продемонстрировать возможности PHP при создании Web-приложений при обмене данными с Internet-серверами.
27.8. PEAR
PEAR <http://pear.php.net/> - это репозиторий расширений и приложений PHP (PHP Extension and Application Repository). Он является составной частью проекта PHP, и при инсталляции PHP можно получить копию основной библиотеки PEAR. В определенном смысле PEAR является параллелью Perl CPAN. Он хранит в своей библиотеке множество сценариев PHP, предназначенных для общего применения. Необходимые компоненты можно получить при использовании самого PEAR. Проект PEAR ведет Стиг Баккен (Stig Bakken).
Основной набор классов PEAR поставляется вместе с PHP. Несмотря на то что область применения некоторых пакетов неширока, PEAR как единое целое содержит в себе приложения общего назначения. Загрузка пакета PEAR несложна. Дистрибутив PHP включает сценарий оболочки pear. Запуск pear без аргументов дает возможность просмотреть все имеющиеся в наличии команды. Для того чтобы получить список пакетов, доступных для инсталляции, выполните команду pear remote-list, а для того чтобы установить пакет - команду типа pear install XML_Tree. С помощью этой команды запускается сценарий, который загружает и устанавливает пакет.
Использование класса PEAR также не является сложной задачей. По умолчанию PHP хранит загруженные классы PEAR по пути /usr/local/lib/php. Этот путь должен быть отражен в пути include, а это означает то, что вы можете включать класс PEAR простым указанием его имени. Например, команда require_once('XML/Tree.php') создает класс XML Tree. В листинге 27.8 продемонстрировано использование сценария XML_Tree, который позволяет создавать XML-документы без необходимости расширения DOMXML.
| Листинг 27.8. Использование класса PEAR_
<?php
// Загрузить XML_Tree
require_once('XML/Tree.php');
// создать документ
$tree = new XML_Tree;
$root =& $tree->addRoot('catalog');
$section =& $root->addChild('section');
$section->addChild('A'),-
$section->addChild('B'),-
$section->addChild('C);
$section =& $root->addChild('section'); 
$section->addChild('X');
$section->addChild('Y');
$section->addChild('Z'),-
// вывести XML- документ
header('Content-Type: text/xml');
$tree->dump();