Новое ядро и ORM Тушинский Юрий Технический директор Битрикс Основные принципы новой платформы Использование последних версий серверного ПО: PHP 5.4, MySQL 5. Полноценное использование ООП. Использование исключений (exceptions). Отказ от поддержки исторических хвостов. Все конечные операции по интеграции: шаблоны компонент, шаблоны сайта, простейшие компоненты - останутся легкодоступны для начального уровня программирования и не очень внешне изменятся. Bitrix Framework Библиотека классов. ORM. Новый жизненный цикл страницы, глобальные объекты. Провайдеры объектов для основных операций. События везде, параметризированные события, почтовые события. Классы для работы с мульти-загрузчиком файлов (Aurigma), типовые интерфейсы. Глобальный runtime объект • Далекий аналог $APPLICATION • Содержит в себе объекты-интерфейсы: • Для работы с СУБД (ORM) • Файловая система • Обработчики текста • Логирование • Компонентная модель, обработчик шаблонов • Работа с кешем • Обработчики URL • Текстовый процессор • Для аутентификации и авторизации, локализации, … Глобальный runtime объект • Некоторые объекты-интерфейсы можно переопределить своими реализациями (провайдеры). Например, переопределить авторизацию, шаблонизатор или способ хранения данных кеша: ORM Объектно-реляционное отображение — технология программирования, которая связывает базы данных с концепциями объектноориентированных языков программирования, создавая «виртуальную объектную базу данных». Википедия. ORM Унифицированное АПИ. Поддержка noSQL. Генерация SQL запросов в одном месте (ORM). Сложная логика фильтров во всех сущностях. Переход на работу с объектами, а не массивами. Возможность выбирать связанные объекты необходимой вложенности и управлять объемом выбираемых данных. Тем не менее остается возможность управлять взаимодействием с СУБД, переопределять запросы. Поддержка пользовательских свойств (полей). Возможность автогенерации методов установки/выборки полей для использования autocomplete в популярных IDE. ORM – описание данных • Класс сущности содержит в себе описание структуры данных и связи. • На основе этой информации строятся SQL запросы, set и get методы сущности по умолчанию. • Поддержка пользовательских полей ORM – выборка данных • Класс сущности содержит в себе методы для выборки данных getList() и getById(). • Выборка возвращает коллекцию для данной сущности. • Генерацией SQL запроса занимается ORM, но в исключительных случаях можно ей помочь. ORM – изменение данных • Класс сущности содержит в себе методы для модификации данных Update, Add, Delete. • Автоматическая поддержка событий до операции и в момент операции. • Возможность группового изменения данных. Этапы внедрения новой платформы К версии 12.0 планируется: Начать реализацию каркаса будущей платформы Сделать ORM Внедрить ORM в базовые сущности платформы: сайты, пользователей, группы, языки. Реализовать на основе ORM новый модуль HL инфоблоков. Дальше: перевод остальных сущностей на ORM и модификация ядра, усовершенствование библиотеки классов и базового функционала платформы. Модуль HL инфоблоков Позволит создавать списки для хранения произвольных данных (новости, вакансии, ), каждый хранится в своих таблицах БД: • Производительность за счет разделения данных по таблицам. • Унифицированное и производительное API по работе с данными за счет новой ORM. • Пользовательские поля. Модуль HL инфоблоков Инфоблоки первого типа: все элементы в одной таблице, все свойства в одной таблице в виде записей - для всех инфоблоков. Инфоблоки второго типа: все элементы всех инфоблоков в одной таблице, свойства в отдельных таблицах в полях. HL инфоблоки: элементы в отдельных таблицах, свойства в полях. Модуль HL инфоблоков Административные страницы: • создания/изменения списков (создаются таблицы, модифицируются поля, индексы) • изменение элементов списка Универсальные компоненты В дальнейшем: • интеграция с поиском • расширенные права Спасибо за внимание! Вопросы?