партнер компании 1с-битрикс
сайт фрилансера Сергея Эстрина
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Универсальная галерея - модуль для битрикс
Презентация нового ядра Bitrix d7 - это почти двухчасовой доклад на партнерской конференции 2013 года. Если вы не смогли осилить его просмотр, то предлагаю вам котороткий конспект о самом главном - какие преимущества принесет новое ядро, и основы работы с ним.
[spoiler]
Все свои файлы в папке /local/


Отныне весь код отдельного сайта можно размещать в папке /local/, а не как раньше в /bitrix/templates/, /bitrix/components/имя/ и т.д. Это существенно упростит командную разработку с использованием систем контроля версий, и позволит полностью отделить код разработки сайта от ядра.

Подключаем только header

Код обычной страницы в публичной части теперь будет выглядеть так:

<? 

require_once(
$_SERVER["DOCUMENT_ROOT"]."/bitrix/d7.php"); 
$page->setTitle("Заголовок страницы"); 
?> 
Текст страницы
При этом, по словам разработчиков, теперь не нужно использовать отложенные функции, т.к. сначала подключается ядро, потом шаблон страницы, т.е. значения свойств страниц должны быть доступны и в хедере, а не только в футере.

Примечание: пока мне не удалось запустить данный функционал, возможно он только планируется, но еще не реализован. Если вам удалось, отпишитесь, пожалуйста, в комментариях.

Отказ от глобальных переменных

Теперь вместо глобальных переменных, таких как $APPLICATION, $USER, $DB, $CACHE_MANAGER, и т.д., будут использоваться специальные объекты.

ORM (Object-relational mapping)

Это значит, что будет елиный синтаксис GetList, Add, Update, Delete, в отличие от ситуации на данный момент, когда, например, параметры CUser::GetList сильно отличаются от параметров того же CIBlockElement::GetList. Также будет стандартизирован синтаксис параметра $arFilter, который на данный момент также сильно различается от модуля к модулю. Еще разработчики обещают, что для каждого метода будут реализованы события, и синтаксис их, вероятно, тоже будет единым. Это будет реализовано благодаря тому, что все классы будут наследоваться от базового класса Entity, в котором уже будут реализовано все, что необходимо, включая события (но каждый метод базового класса при желании можно будет и переопределить).

Синтаксис нового getList будет принимать только один массив в качестве параметра, в котором в произвольном порядке можно будет указать любой набор нужный параметров из следующих:

  • 'select' - массив выбираемых полей
  • 'filter' - массив фильтра
  • 'group' - массив полей группировки
  • 'order' - массив сортировки
  • 'limit' - ограничение количества
  • 'offset' - смещение от начала
  • 'count_total' - подсчет количества записей
Использование массива вместо привычного набора параметров позволит не указывать false, Array(), и т.д., если какой-то из параметров вам не нужен, а нужный находится в конце.

Методы же add, update, delete теперь будут возвращать типизированные объекты AddResult, UpdateResult и DeleteResult соответственно, в которых будет содержаться информация об успешности операции и ошибки при их наличии.

Класс Bitrix\Main\Config

Этот новый класс объединяет как настройки модулей, хранимые в БД (Bitrix\Main\Config\Option, ранее COption), так и настройки ядра - Bitrix\Main\Config\Configuration (альтернатива константам в dbconn.php).

Подключение модулей (теперь модули подключаются через класс \Bitrix\Main\Loader)

\Bitrix\Main\Loader::IncludeModule($moduleName);


Исключения


Теперь если вы, например, ошиблись в написании названия параметра фильтра в GetList, данный параметр не будет проигнорирован как раньше, и не будут выбраны все элементы, а скрипт остановится с ошибкой.

Что нужно знать разработчикам модулей


Классы функций теперь должны размещаться в подпапке lib в папке модуля. При этом, если название файла с классом будет соответствовать пространству имен, то автоподгрузка класса будет включена автоматически, т.е. теперь не нужно будет пользоваться функцией CModule::AddAutoloadClasses (хотя ее использование пока не запрещается, но теперь эта функция называется Loader::registerAutoLoadClasses).

Чтобы оставить сообщение, авторизуйтесь, или войдите с помощью: