Підтримка класів компонентів

Зайцев Артемій:
Зараз думаю, що великі компоненти - це зло, навіть з класами. Виношу класи в окремі файли і автолоадом підключаю.
Але буває так, що потрібна в компоненті пара функцій. І тоді такий клас буде дуже корисним. А ще статичні змінні в класі.

Проектувалося саме з прицілом на це.
Важку бізнес логіку краще тримати в такій суті як "модуль".

З версії 12.0.0 доступна підтримка класів компонентів. Реалізовано це як файл /component_name/class.php. Class.php - це зарезервоване ім'я файлу, і цей файл автоматично підключається при виклику:

При цьому відбувається виклик final методу initComponent в якому і підключається class.php (якщо він є) і з нього береться самий останній клас спадкоємець від CBitrixComponent.

не матимуть успіху. В результаті буде використовуватися CDemoTestDecorator2.

Врахуйте що при зміні базового класу компонента потрібно буде враховувати поведінку всіх його нащадків (інших компонентів).

приклади використання

Розглянемо найпростіший компонент зводив би параметр в квадрат.

У реальних компонентах замість операції множення може бути три десятка рядків і таких операцій може бути 5-6. В результаті файл component.php перетворюється в важко розуміється "річ в собі".

Виділяємо логіку компонента в клас.

Тепер код у файлі component.php став керованим.

спадкування компонент

Компонент без component.php

Можна створити і компонент без файлу component.php

Для цього достатньо перекрити метод executeComponent. наприклад:

Тепер з обох компонентів можна видалити файли component.php.

Схожі статті