Зайцев Артемій:
Зараз думаю, що великі компоненти - це зло, навіть з класами. Виношу класи в окремі файли і автолоадом підключаю.
Але буває так, що потрібна в компоненті пара функцій. І тоді такий клас буде дуже корисним. А ще статичні змінні в класі.
Проектувалося саме з прицілом на це.
Важку бізнес логіку краще тримати в такій суті як "модуль".
З версії 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.