Обзор 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:
// Joomla 4
$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 обычно используется разработчиками расширений для расположения своих собственных библиотек.
- Последнее обновление: .