18 июня 2018
Что меняется при данном подходе? Весь набор фалов остается прежним добавляется только файл class.php, в котором и будет располагаться вся логика.
Как работает файл class.php?
Как я уже сказал подключается он автоматически. Далее необходимо объявить класс с произвольным именем, как класс наследник от CBitrixComponent.
Код:
В этом классе уже доступны две переменные (объявлять их не нужно):
Код:
С ними и происходит вся работа, как и при старом подходе.
Так же есть 2 предопределенных метода, которые срабатывают автоматически.
Код:
Вызываются они в порядке следования. В функции onPrepareComponentParams() принято обрабатывать массив $arParams. А метод executeComponent() выполняет основной код компонента в котором происходит заполнение массива $this->arResult.
В своем компоненте я разместил следующий код в методе executeComponent().
Код:
Думаю теперь все понятнее стало. Рассмотрим вызов функций по порядку:
Привожу весь код файла class.php:
Посмотрите, если свернуть код в редакторе насколько он стал проще для восприятия и организованней. ООП действительно рулит.
Скачать полностью архив с компонентом можно отсюда.
От автора:
Мне такой подход понравился. Код, как я уже написал, стал организованней и понятнее. Можно сразу свернуть вспомогательные функции и оставить только главное. Дальше я буду пользоваться только компонентами Битрикс с использованием классов. До встречи!
Урок 15. Поддержка классов в компонентах Битрикс
Приветствую! Совсем недавно я рассмотрел разработку собственного универсального компонента Битрикс. Но он был написан ещё по старым канонам разработки. А новое ядро D7 наступает и помаленьку вытесняет старые подходы. Сейчас уже компоненты раздела bitrix:catalog почти все написаны на классах. Я решил так же разобраться в этой теме и переписать свой компонент на новую технологию с использованием классов.Что меняется при данном подходе? Весь набор фалов остается прежним добавляется только файл class.php, в котором и будет располагаться вся логика.
component.php- уже не обязательный файл- class.php - основной фал компонента с классами в котором реализуется вся логика работы компонента на API Bitrix
- .description.php - файл описания компонента.
- .parameters.php - файл параметров компонента.
- templates/.default/template.php - файл шаблона по умолчанию для компонента.
Как работает файл class.php?
Как я уже сказал подключается он автоматически. Далее необходимо объявить класс с произвольным именем, как класс наследник от CBitrixComponent.
Код:
class CIblocList extends CBitrixComponent
{
В этом классе уже доступны две переменные (объявлять их не нужно):
Код:
$this->arParams
$this->arResult
С ними и происходит вся работа, как и при старом подходе.
Так же есть 2 предопределенных метода, которые срабатывают автоматически.
Код:
public function onPrepareComponentParams($arParams) {}
public function executeComponent()
Вызываются они в порядке следования. В функции onPrepareComponentParams() принято обрабатывать массив $arParams. А метод executeComponent() выполняет основной код компонента в котором происходит заполнение массива $this->arResult.
В своем компоненте я разместил следующий код в методе executeComponent().
Код:
public function executeComponent()
{
try
{
$this->checkModules();
$this->getResult();
$this->includeComponentTemplate();
}
catch (SystemException $e)
{
ShowError($e->getMessage());
}
}
Думаю теперь все понятнее стало. Рассмотрим вызов функций по порядку:
- $this->checkModules() - мы проверяем подключен ли модуль Инфоблоков Битрикс.
- $this->getResult() - подготавливаем массив $arResult. Это основной блок кода.
- $this->includeComponentTemplate() - эта конструкция подключает шаблон.
Привожу весь код файла class.php:
Посмотрите, если свернуть код в редакторе насколько он стал проще для восприятия и организованней. ООП действительно рулит.
Это уже не огромная простыня кода, где ещё надо самостоятельно делить на блоки код чтобы начать что-то понимать. Все вполне наглядно и помещается в один экран.
Скачать полностью архив с компонентом можно отсюда.
От автора:
Мне такой подход понравился. Код, как я уже написал, стал организованней и понятнее. Можно сразу свернуть вспомогательные функции и оставить только главное. Дальше я буду пользоваться только компонентами Битрикс с использованием классов. До встречи!
Комментарии