Обзор Joomla API

Joomla API – это интерфейс для разработки расширений, доступа к различным функциям CMS и компонентам ядра.

Joomla API условно можно разделить на три части:

  • API непосредственно самой CMS (ранее называлось Joomla Platform);
  • API компонентов ядра, которые поставляются вместе с Joomla;
  • API сторонних библиотек (в том числе Joomla Framework).

Библиотеки CMS и все сторонние библиотеки располагаются в директории /libraries. API компонентов ядра не имеет одного центра, так как это совокупность функций всех компонентов ядра.

CMS API

Миграция

CMS API в рамках линейки Joomla 3 переживает миграцию на пространство имён, которая должна быть завершена к выходу Joomla 4. Для поддержки обратной совместимости все классы, которые перешли на пространство имён имеют свой алиас. Список алиасов можно найти в /libraries/classmap.php.

Пример алиаса:

JLoader::registerAlias('JRegistry', '\\Joomla\\Registry\\Registry', '5.0');

Здесь мы видим, что классу Registry был присвоен алиас JRegistry, который будет удалён в Joomla 5.0. Таким образом, при вызове в коде класса JRegistry вы не получите ошибку, потому что он будет ссылаться на класс Registry в пространстве имён Joomla\Registry.

Расположение

CMS API располагается в нескольких директориях. Кратко рассмотрим каждую из них.

/libraries/cms

Здесь расположены классы, которые являются специфичными для CMS. Например, служебные классы для формирования HTML элементов в /libraries/cms/html.

/libraries/joomla и /libraries/legacy

Здесь расположены пакеты классов, которые находятся в процессе миграции на пространство имён, либо будут полностью удалены в будущих мажорных версиях Joomla. Папка /libraries/legacy удалена в Joomla 4.

/libraries/src

Здесь расположена основная часть CMS API. Все пакеты классов поддерживают пространство имён стандарта PSR-4. Зарезервированное пространство имён для этой директории: Joomla\CMS.

Эти пакеты можно условно разделить на несколько глобальных разделов:

  • Основные классы - пакеты классов, которые являются основой ядра CMS. Например: Access, Application, Database, Document, Factory, Form, Input, Language, Router, Session, Uri, User и другие.
  • Служебные классы - пакеты классов, которые упрощают работу с теми или иными аспектами CMS. Например: Authentication, Categories, Date, Filesystem, Image, Mail, Pagination, Toolbar и другие.
  • Вспомогательные классы – классы, включающие в себя различные служебные функции, которые помогают при работе с ядром и расширениями. Например: ApplicationHelper, CMSHelper, ContentHelper, MediaHelper, ModuleHelper, PluginHelper и другие.

На официальном сайте доступна веб-версия CMS API с удобным доступом к пакетам классов.

API компонентов ядра

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

Наиболее распространенный пример использования – это роутеры компонентов, который формируют корректный путь до элементов компонента. Например, чтобы сформировать путь до материала, необходимо использовать класс роутера компонента материалов com_content:

\JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');<br />
Route::_(\ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language));

Другой пример - получить список опубликованных материалов определённой категории. Для этого мы используем модель компонента com_content:

$model = Factory::getApplication()
    ->bootComponent('com_content')
    ->getMVCFactory()
    ->createModel('Articles', 'Site', ['ignore_request' => true]);

$model->setState('filter.published', 1);
$model->setState('filter.category_id', 1);

$items = $model->getItems();

API сторонних библиотек

Кроме собственных библиотек, Joomla использует сторонние библиотеки, которые формируют своеобразный набор интерфейсов сторонних библиотек.

/libraries/fof

FrameworkOnFramework - пакеты для быстрой разработки расширений. Удалено в Joomla 4.

/libraries/idna_convert

Библиотека для кодирования и декодирования интернационализированных доменных имен. В Joomla 4 загружается через Composer в /libraries/vendor.

/libraries/php-encryption

Криптографическая библиотека.

/libraries/phpass

Библиотека для хеширования паролей.

/libraries/phputf8

Библиотека для корректной работы с utf8. В Joomla 4 загружается через Composer в /libraries/vendor/joomla/string/src/phputf8.

/libraries/vendor

Здесь располагаются пакеты, которые устанавливаются через Composer и необходимы для полноценной работы Joomla. Среди них: Joomla Framework (например: joomla/di, joomla/event, joomla/registry), Symfony (например: symfony/yaml), PHPMailer и другие.

Кроме того, папка /libraries обычно используется разработчиками расширений для расположения своих собственных библиотек.

© 2019 BinaryCraft. Все права защищены.