kernel PPTX, 973 КБ

Download Report

Transcript kernel PPTX, 973 КБ

Архитектура «D7»:
модули, классы, жизненный цикл
Кирсанов Алексей
Ведущий разработчик
1C-Битрикс
Основные принципы
ООП
Сильное зацепление
Каждая функциональность сосредоточена в одном
месте, обязанности класса тесно связаны
Слабая связанность
Паттерны проектирования
Модули
Модульная архитектура
/bitrix/modules
/local/modules
Компонент
1
Компонент
2
...
Ядро / API
Магазин
Бизнеспроцессы
Инфоблоки
...
Главный модуль
Данные
Доступ к
данным
Авторизация
Конфигурация
...
Пространства имен и классы
Пространство имен Bitrix
Bitrix\Main
Bitrix\Main\IO
Bitrix\Forum
Для сторонних модулей
mycompany.catalog <-> MyCompany\Catalog
Классы не делятся по типам баз данных - ORM
Имена классов без префиксов и суффиксов
Исключение: классы сущностей ORM, наследующие
Bitrix\Main\Entity\DataManager, имеют суффикс Table
(CultureTable, LanguageTable)
Структура файлов модуля
Папка /lib
/bitrix/modules/main/lib
Имя файла – имя класса в нижнем регистре
Путь к файлу учитывает пространство имен
Bitrix\Main\Application <-> /main/lib/application.php
Bitrix\Main\IO\File <-> /main/lib/io/file.php
MyCompany\Catalog\Tax <-> /mycompany.catalog/lib/tax.php
Исключение: классы сущностей ORM, наследующие
Bitrix\Main\Entity\DataManager
Bitrix\Main\UserTable <-> /main/lib/user.php
Подключение
Порядок в именовании классов - автозагрузка при
первом обращении
Можно по прежнему регистрировать с помощью
void Loader::registerAutoLoadClasses(
$moduleName,
array $arClasses
)
Подключение модуля
mixed Loader::includeModule($moduleName);
Ошибки
Идеология нулевой терпимости к ошибкам разработчика
Привет
Исключения
Исключительная ситуация - не типичная ситуация,
при которой не имеет смысла продолжать
выполнение базового алгоритма.
Жизненный цикл
Загрузчик
Приложение
Контекст
Ответ
Страница
Приложение (Application)
Не зависит от конкретного хита
Отвечает за инициализацию ядра и запуск на
выполнение конкретного обработчика запроса
Базовая точка входа (маршрутизатор) для
обращения к глобальным сущностям ядра
Одиночка / Singleton
Bitrix\Main\Application
HttpApplication
CliApplication
Контекст (Context)
Отвечает за конкретный хит
Содержит запрос, ответ, текущего пользователя и
т. п.
Bitrix\Main\Context
HttpContext
CliContext
Страница (Page)
Обработчик конкретного запроса
Выполняет конкретный скрипт, собирает тело
ответа на основании шаблона страницы
Bitrix\Main\Page
PublicPage
AdminPage
LightPage
Код страницы сайта
Общая схема работы страницы
Выбор файла ядра – выбор определенного типа
приложения и определенного типа страницы
Код d7
Режим совместимости
Запрос (Request)
Доступен через контекст
Данные запроса
Bitrix\Main\Request
Bitrix\Main\HttpRequest
События
Новая форма
Получение результатов
Анонимные обработчики
Работа с БД
MySQL (mysqli, Mysql), MS SQL, Oracle, NoSQL
Общая архитектура классов API:
Пул соединений Bitrix\Main\DB\ConnectionPool
Конкретные классы соединения, наследующие
абстрактный класс Bitrix\Main\DB\Connection
Конкретные классы формирования SQL запросов,
наследующие Bitrix\Main\DB\SqlHelper
Конкретные классы для работы с результатом
выполнения запроса, наследующие
Bitrix\Main\DB\Result
БД: Соединение
Получение соединения, именованные соединения
Разные формы вызова выполнения запроса
БД: Результаты
Получение результатов запроса
Модификация результата
Конфигурация
\Bitrix\Main\Config
\Bitrix\Main\Config\Configuration
\Bitrix\Main\Config\Option
Файлы
Bitrix\Main\IO
Path – работа с путями
Directory – работа с папками
File – работа с файлами
Другие классы
Bitrix\Main\Data
Bitrix\Main\Text
Bitrix\Main\Type
Bitrix\Main\Web
...
Спасибо за внимание!
Вопросы?