Что это такое: PEAR?

PEAR - это аббревиатура от "PHP Extension and Application Repository" (Репозиторий приложений и модулей PHP).

PEAR - это:

  • структурированная библиотека открытого кода, созданная для пользователей PHP;
  • система управления пакетами и распространения кода среди разработчиков;
  • стандарт написания PHP-кода (подробнее о стандарте см. здесь);
  • базовые классы PHP-кода (подробнее о базовых классах см. здесь;
  • библиотека дополнительных модулей для PHP (The PHP Extension Code Library, PECL), подробную информацию о PECL можно узнать здесь;
  • веб-сайт, листы рассылки и зеркала для загрузки - все это предназначено для поддержания и развития сообщества разработчиков PHP/PEAR.

Структурированная библиотека PHP-кода

Код в PEAR разделен на так называемые "пакеты". Каждый пакет - это отдельный проект со своей командой разработчиков, номером версии, циклом разработки, документацией и определенным отношением к остальным пакетам (включая возможные зависимости). Пакеты распространяются в виде архивов *.TAR.GZ, которые включают в себя описание пакета, и устанавливаются на вашей системе с помощью инсталлятора PEAR.

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

В PEAR существует определенное дерево пакетов, в котором каждой ветвью является часть имени пакета. Ветви разделяются по темам, их названия в именах пакетов разделяются символом подчеркивания. Например, "MP3_Id", "Archive_Tar" и "HTTP_Post".

Пакеты могут находиться в зависимости друг от друга, однако не существует какой-либо обязательной зависимости между пакетом и его "родителем" в дереве пакетов (например, "HTTP_Post" не зависит от "HTTP").

Несколько ветвей высшего уровня называются "суб-репозиториями" и выполняют специальные функции. На данный момент это: PECL, Gtk и App. Каждый из них достоин отдельной темы, поэтому за дополнительной информацией лучше обратиться в соответствующие разделы настоящей документации.

Руководство по стилю написания кода, Стандарт кодирования PEAR (или коротко - PCS), существует для облегчения совместной работы разработчиков PEAR, для повышения качества и портабельности, а также для того, чтобы помочь разработчикам в создании cтандартизированных программных интерфейсов. В пакетах, которые входят в PFC (The PHP Foundation Classes), стандарт кодирования соблюдается особо строго, для других - менее.

Распространение кода и управление пакетами

Все пакеты PEAR регистрируются и загружаются в центральную базу данных, которая доступна на pear.php.net. Сторонние пакеты с открытыми исходниками так же могут быть зарегистрированы и загружены. Пакеты с закрытыми исходниками PEAR предназначена только для кода с открытыми исходниками.

Pear.php.net предоставляет два варианта интерфейсов к базе данных PEAR: дружественный для пользователя интерфейс (HTML) и интерфейс для машины (на данный момент это XML-RPC). Загрузка пакетов осуществляется с помощью HTTP. Также, pear.php.net выполняет и другие функции:

  • управление пользовательскими записями (интегрированное с сервером CVS)
  • управление пакетами
  • управление релизами пакетов

Пакеты распространяются в виде архивов *.TAR.GZ с описанием в формате XML. Описание содержит информацию о пакете, список файлов и их предназначений, а также список зависимостей.

Базовые классы PHP

Базовые классы (The PHP Foundation Classes, PFC) - это подмножество PEAR, основными целями которого являются качество, универсальность, многофункциональность и совместимость. В том случае, если PHP и далее будет поставляться вместе с пакетами PEAR и установщиком, то этими пакетами непременно будут базовые классы.

Повышенное качество этих пакетов означает то, что ни один пакет с уровнем ниже "stable" не будет допущен в PFC.

Универсальность означает, что пакеты не должны без особых на то причин зависеть от любого вида внешнего окружения (например, формата вывода, операционной системы, веб-сервера, SAPI и др.)

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

Совместимость - это не просто поддержка синтаксиса и семантики предыдущих версий, это также заблаговременное планирование. Проектирование кода таким образом, что добавление новой функциональности не требует больших усилий, делает код "совместимым с будущими версиями".

Библиотека дополнительных модулей для PHP (PECL)

PECL

PECL (The PHP Extension Code Library) - это суб-репозиторий PEAR для модулей, написанных на C, как и те, которые распространяются вместе с самим PHP. На самом деле, одним из мотивов создания PECL была необходимость перемещения куда-либо модулей из PHP. Модули в PECL соблюдают стандарты кодирования, использованные при написании PHP, а не стандарты кодирования PEAR, однако они распространяются и устанавливаются с помощью пакетов PEAR.

Процесс перемещения модулей из PHP в PECL называется "pickling" (от PECL и от "pick" - "отбирать").

Пакеты Gtk

Gtk

Пакеты Gtk - это пакеты, которые используют функциональность проекта PHP-GTK. Код в этом суб-репозитории следует стандарту кодирования PEAR.

На данный момент еще нет определенного плана о том, как они будут распространяться.

Пакеты приложений

App

TBD

    Поддержать сайт на родительском проекте КГБ