Паттерны
В промышленной разработке больших программных продуктов встречаются повторяющиеся проблемы. Какими бы разными ни были проектируемые системы, в них могут быть одинаковые задачи масштабирования, организации кода, данных или межмодульного взаимодействия.
Для некоторых общих проблем существуют хорошие, зарекомендовавшие себя решения, так называемые паттерны проектирования. Вы могли о них слышать: Abstract Factory, Singleton, Decorator, Template method и другие.
Знание паттернов проектирования помогает в проектировании и поддержке ПО, но использоваться они должны не для повышения “крутости” кода проекта и команды, а для решения действительно существующих или возможных проблем.
Первый паттерн в нашем фреймворке, с которым вам нужно освоиться, - MVC.
MVC
Паттерн Model-View-Controller (сокращенно MVC) предлагает разделять любое ПО на три уровня:
- Model (Модель) отвечает за работу с долгосрочно хранимыми данными. Модель не знает, где, когда и зачем эти данные нужны.
- View (Представление) отвечает за вывод данных для пользователя. Представление не знает, откуда данные взялись для вывода. Его ответственность - только корректное их представление в браузере, на экране смартфона и т.п.
- Controller (Контроллер) отвечает за взаимодействие подсистем и работу с действиями пользователя. Контроллер — та система, которая “встречает” запрос пользователя, передает данные в Модель или запрашивает их для Представления.
В некоторых определениях MVC явно подразумевается 4-ый уровень под названием Router (Роутер). Этот уровень нужен для выбора подходящего Контроллера.
MVC в «1С-Битрикс: Управление сайтом»
Моделью в «1С-Битрикс: Управление сайтом» можно назвать всю API-часть, состоящую из модулей (не путайте модуль в системе и Модель MVC!). Например, в модуле Информационные блоки iblock есть набор классов: CIBlockElement, CIBlockSection, CIBlock — это и есть модель. Эти классы не знают, откуда приходят данные, но знают, как соотнести данные и таблицы в БД.
За уровень Представления отвечают несколько концепций, в которых разрешено выводить HTML:
- Шаблоны компонентов
- Шаблоны сайта
- Контентная часть страниц
За уровень Контроллера отвечают файлы component.php и class.php в компонентах и result_modifier.php шаблонов компонентов, а также невизуальная часть страниц.
Роутером в платформе являются:
- Файловая система, потому что по умолчанию адрес вида /about/ будет обработан страницей /about/index.php
- Механизм ЧПУ (комплексные компоненты), т.к. они могут изменить логику, предписанную файловой системой.
Полезные ссылки и материалы