Abr@X@bra.ru
Битрикс D7. Компоненты

Битрикс D7. Компоненты

10.05.2017
386
В новом ядре D7, активно используется ООП. Для Битрикс использования ООП – это качественный скачок. 

Хочу обратить ваше внимание, что Битрикс был основан еще в 1998 году, а Битрикс управление сайтом 3.0, коробочный продукт, вышел в 2003 году. И система до сегодняшнего дня, поддерживает обратную совместимость своих версий. 

При написание своего собственного кода на новом ядре D7, необходимо использовать ООП. 

Первым важным нововведением ядра D7, являются компоненты на классах. Это возможность появилась с 12 версии главного модуля. Тоесть еще раньше релиза самого ядра D7.

Плюшки:
  • Структурированный код
  • Возможность наследования 
Если вас по каким-то причинам, существующий компонент не устраивает, то раньше мы копировали тот компонент, который хотели изменить в свое пространство имен – в свою папку и изменяли код под свои потребности. 

Сейчас можно просто отнаследоваться от компонента и переопределить методы нужного вам компонента или добавить свои.

Разберем на примере

Теперь вместо - component.php используем class.php



Остальный файлы не каких изменений не потерпели. 



Открою class.php, тут я подготовил простой пример. 



Мы должны создать класс, который будет унаследован от CBitrixComponent. 



Наш класс я назвал – classComponents. Имя класса может быть произвольным. 



В данном классе мы должны определить метод:



Который по факту при выполнения компонента запускается. 

В нем вызываем метод: 



Данный метод, подключает шаблон. А выше выполняется наш код.



Который реализует логику работы компонента и формирует массив данных. 

Еще выше у нас описан метод var1



В нашем случае, формируется некий текст и он возвращается.



После чего, результат работы функции var1, добавляем в arResult. 



Давайте создадим компонент и отнаследуем его от ранее созданного. 

Создадим еще один компонент, который будет наследоваться. 



Файла .description.php, .parameters.php, шаблоны компонента - templates. Нужно создать или скопировать заново, так как они не как не наследуются. 

Также нужно создать файл class.php



Перейдем в него. И первым делом мы должны вызвать метод - includeComponentClass, класса CBitrixComponent.



В который передаем имя компонента, от которого будем наследоваться. 



Метод инициализирует компонент и нам доступен класс компонента и мы можем от него наследоваться. 

Обычным образом наследуемся. Наследуем класс classComponentsExtends от класса classComponents. 



В исходном классе у нас есть метод - var1, не трогаем его. Создадим метод var2, который делает тоже самое, что и var1, но возвращает другой текст. 



Далее нам нужно переопределить метод executeComponent. 



В противном случае у нас не вызывается наш метод var2, так как исходный компонент о нем ничего не знает. 

Но у нас есть всегда возможность не переопределять полность метод. Мы сначала вызовем метод var2. Результат работы которого добавим в arResult. 



А потом вызовем метод - executeComponent, от которого мы наследовались. 



Хочу обратить внимание, что вызывать метод:



Не нужно, так как его вызов есть в исходном методе - executeComponent. 

Давайте посмотрим на распечатку компонентов на визуальной части сайта. 



Сверху выводится исходный компонент, а ниже разместили унаследованный компонент. 

Как можем заметить, в массиве arResult, присутствует результат работы, как метода var2, так и метода var1 который был унаследован. 


Bitrix, D7
Читайте также:
Битрикс D7. Настройка параметров ядра

Битрикс D7. Настройка параметров ядра

Битрикс имеет ряд настроек ядра, которые не имеют визуального интерфейса редактирования. Это сделано специально, так как...
Читать
Битрикс и D7. Что за зверь такой

Битрикс и D7. Что за зверь такой

В этом посте хочу рассказать, что такое D7. Кто-то спросит D7? А что-такое D7? А это вообще Битрикс? А кто-то уже об это...
Читать
Битрикс D7, инфоблоки - ORM

Битрикс D7, инфоблоки - ORM

Модуль ORM для инфоблоков.

Все знаю что у битркс появилась какая-никакая, но все-таки ORM.

И они даже модуль...

Читать