Разработка своего компонента для Битрикс с классами и D7
Разработка своего компонента для Битрикс с классами и D7
С 12й версии 1С-Битрикс появилась возможность писать компоненты используя классы, но наиболее примечательной, на мой взгляд, стала возможность наследовать классы компонентов. Таким образом, можно написать стандартный компонент, а потом при необходимости наследоваться от него и добавлять новый необходимый функционал, не копипастя повторяющиеся и стандартные куски кода. Так же с 12й версии ребята анонсировали появление нового ядра D7 (почему такое название я не знаю), они переписывают ядро, появились неймспейсы, ORM, в 14й версии стали появляться компоненты переписанные под новую идеологию, появился целый раздел в документации, посвященный D7. Опираясь на эти нововведения попытаемся написать компонент по новому. Сразу скажу, я не фанат компонентов, которые настраиваются целиком и полностью и выполняют 100500 задач. В моем понимании компонент имеет минимальное количество настроек и выполняет одну конкретную задачу. При работе с битриксом 90% это работа с инфоблкоми, поэтому можно выделить три основных компонента для работы инфоблоками:
Рассмотрим создание компонента списка элементов инфоблока, от которого потом можно было бы наследоваться (параметры, отличительные особенности, «структура» компонента, ссылка на код компонента в конце статьи, считаем, что вы знакомы с битриксом). Стандартные настройки для компонента:
Компонент должен выполнять следующие функции:
Такую структуру можно наследовать и переопределять только те методы, которые необходимо (например, для получения спискаразделов достаточно переопределить метод выборки, а не переписывать весь компонент). Отличительные особенности: по новой идеологии, в случае появления нештатной ситуации необходимо выбросить исключение, поэтому в коде появились битриксовые исключения; появились неймспейсы, поэтому работа с языковыми фразами осуществляется через класс BitrixMainLocalizationLoc, при этом необходимо явно подключать языковые файлы через метод Loc::getMessages(__FILE__), а получение языковой фразы — Loc::getMessage();подключение модулей осуществляется через метод BitrixMainLoader::includeModule(); в случае выбрасывания эксепшена MainArgumentNullException необходимо указать код поля, он подставится в шаблон вывода сообщения об ошибке. Ссылки по теме: |