Обзор классов, используемых при разработке компонентов в CMS Joomla
Введение
Предлагаю читателям «Хабрахабра» обзорную статью-шпаргалку по основным классам, используемым при разработке компонентов в CMS Joomla 3.0 +. Далее в планах сделать подробный обзор каждой группы классов в отдельности.
Структура компонентов Joomla
Компонент является базовой логической единицей, построенной в соответствии с моделью MVC.
Компонент состоит из следующих структурных единиц:
- Точка входа в компонент – исполняемый php файл в корне каталога компонента. В нем расположен код инициализации и вызова базового контроллера компонента;
- Класс контроллера компонента – анализирует uri и вызывает нужное действие (по умолчанию рендеринг дефолтного view);
- Модели – содержат основную бизнес-логику приложения;
- Виды – содержат контроллеры видов, получающие данные для отображения из моделей и файлы шаблонов вывода;
- Контроллеры – содержат методы действий для обработки пользовательского ввода.
Классы необходимые при разработке компонентов
При разработке расширений используются классы платформы Joomla. Некоторые из них служат базовыми классами для новых пользовательских классов, другие являются вспомогательными, предоставляя интерфейс для использования возможностей системы.
Базовые классы, расширяемые пользовательскими классами при создании компонентов
Для того, чтобы соответствовать модели MVC, каждый компонент должен содержать в себе модели, виды и контроллеры. Платформа Joomla предоставляет классы содержащие в себе базовый функционал всех трех составляющих MVC-приложения. Вновь разрабатываемые классы должны расширять базовые классы с целью повышения скорости разработки за счет повторно используемого кода.
Классы MVC платформы Joomla:
- Класс таблиц JTable – реализует шаблон ActiveRecord для работы с базой данных.
- Классы моделей содержат бизнес-логику. При работе с базой данных зачастую используют класс JTable. В платформе Joomla существуют следующие классы моделей:
- JModelLegacy – базовый класс моделей в Joomla;
- JModelList – класс моделей списка – содержит методы групповой записи, выборки коллекции, выборки коллекции поэтапно для пагинации;
- JModelItem — класс модели значения – содержит методы для работы с одним экземпляром;
- JModelForm – класс обработки форм – содержит методы обработки и валидации форм;
- JModelAdmin – наследуется от JModelForm. Предоставляет методы для автоматизированного выполнения задач администрирования компонента.
- Классы контроллеров – обрабатывают пользовательские действия, являются промежуточным звеном между моделями и видами. Основные классы контроллеров:
- JControllerLegacy – базовый класс контроллеров, предоставляет методы для пользовательского ввода и рендеринга видов, является базовым для остальных видов контроллеров;
- JControllerForm — класс, предоставляющий методы для базовых CRUD операций при обработке форм;
- JControllerAdmin – предоставляет методы для выполнения базовых операций обработки данных в административной панели.
- Классы видов. Получают данные из моделей, рендерят шаблон вывода. Имеют методы для управления текущим документом (веб-страницей), такие как изменение заголовка, изменение содержания мета тегов или их добавление/удаление. Основные классы видов:
- JViewLegacy – предоставляет методы получения данных из моделей и их передачу в шаблон отображения;
- JViewCategory – класс отображения категории материалов;
- JViewCategories – класс отображения списка категорий.
Классы, предоставляющие интерфейс для доступа к возможностям системы
Ниже представлены классы, представляющие собой инструменты для работы с теми или иными сущностями веб-приложения.
- Класс JFactory – является фабрикой для получения существующих и создания новых объектов классов сущностей веб приложения;
- Класс JApplicationCms – предоставляем метод для настройки, запуска, остановки веб приложения, а так же настройки и запуска переадресации, управления роутингом. Экземпляр текущего приложения доступен через статический метод JFactory::getApplication();
- Класс JRegistry – содержит методы для чтения и записи конфигурации приложения. Объект JRegistry доступен через JFactory::getConfig();
- Класс JSession – содержит методы для работы с сессиями. Позволяет открывать и зарывать сессии, записывать и читать значения. Текущий экземпляр JSession доступен через JFactory::getSession().
- JLanguage – содержит методы для установки локализации приложения. Текущий объект доступен через JFactory::getLanguage();
- JDocument – инструмент работы с DOM моделью страницы для рендеринга. Доступен через JFactory::getDocument();
- JUser – класс представляющий пользователя системы. Метод JFactory::getUser() позволяет получить данные текущего пользователя в системе;
- JAccess – класс для управления списками контроля доступа. Объект JAccess доступен через JFactory::getAcl();
- JDatabaseDriver – класс взаимодействия с базой данных через PDO. Объект доступен через JFactory::getDbo();
- JMail – класс для отправки сообщений по электронной почте. Объект класса доступен через метод JFactory::getMail().