В этом руководстве описаны рекомендуемые техники при разработке под платформу 1С-Битрикс (далее просто Битрикс). Весь PHP код должен написан в соответствии со стандартом PSR-1. Стиль написания кода должен соответствовать стандарту PSR-2.
- Общие положения
Часть описанных в этом разделе требований уже указана в стандартах, приведенных выше, но отметим особенно важные.
- РЕКОМЕНДУЕТСЯ использовать только
<?phpи<?=теги. Тег<?использовать НЕ РЕКОМЕНДУЕТСЯ. - РЕКОМЕНДУЕТСЯ использование кодировки UTF-8 без BOM.
- Базовые правила при разработке под Битрикс
при добавлении кода в файл init.php РЕКОМЕНДУЕТСЯ выносить логически сгруппированный код в отдельные файлы и подключать их внутри init.php
НЕ РЕКОМЕНДУЕТСЯ использовать цифровые значения в GetList, GetByID и схожих методах, которые принимают различные ID. РЕКОМЕНДУЕТСЯ создать файл со всеми необходимыми константами и вызывать их имена. У каждой константы ДОЛЖНО быть «говорящее» именование и комментарий.
Не правильно:
<?php$comments = CIBlockElement::GetList(Array(), Array("IBLOCK_ID" => 12));
Правильно: Создаем файл constants.php и указываем в нем:
<?php//ИБ с комментариями пользователейconstCOMMENTS_IBLOCK_ID = 12;
Подключаем этот файл в init.php
<?php//Константы проектаinclude_once($_SERVER["DOCUMENT_ROOT"] . '/bitrix/php_interface/includes/constants.php');
Используем константу
<?php$comments = CIBlockElement::GetList(Array(), Array("IBLOCK_ID" => COMMENTS_IBLOCK_ID));
при выборках данных (например, GetList) ОБЯЗАТЕЛЬНО указывать поля, которые нужны для дальнейших манипуляций, кроме случаев, когда нужны все поля
при необходмости выбрать несколько элементов по ID, ОБЯЗАТЕЛЬНО использовать GetList вместо GetByID
Не правильно:
<?php$element1 = CIBlockElement::GetByID(1); $element2 = CIBlockElement::GetByID(2);
Правильно:
<?php$elements = CIBlockElement::GetList(Array(), Array("ID" => Array(1, 2)));
НЕ РЕКОМЕНДУЕТСЯ использовать прямые запросы к базе данных без крайней необходимости
если к файлу не предусмотрен прямой доступ ОБЯЗАТЕЛЬНО в первой строке файла добавить
<?phpif (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
- Работа с компонентами
- РЕКОМЕНДУЕТСЯ давать шаблонам компонентов осмысленные названия и в каждом проекте придерживаться общего стиля. Например,
Раздел/страница_сайта.Название.ТипПримеры: index.user.authprofile.orders.listcart.products.additional- НЕЛЬЗЯ модифицировать стандартные компоненты. Если возникает такая необходимость — создается копия компонента в своем пространстве имен в папке
/bitrix/components/ - РЕКОММЕНДУЕТСЯ все шаблоны компонентов сохранять в шаблоне
.defaultв папке/bitrix/templates/.default/ - НЕ РЕКОМЕНДУЕТСЯ делать любые манипуляции с данными в файле
template.php. При необходимости правки логики стандартных компонентов, но недостаточной для того, что делать свой используются файлы result_modifier.php и component_epilog.php - НЕЛЬЗЯ вставлять код вызова компонента внутрь файла
template.phpдругого компонента - РЕКОМЕНДУЕТСЯ использовать файлы
style.cssиscript.jsв шаблонах только если они переопределяют стандартное поведение схожих элементов. РЕКОМЕНДУЕТСЯ оставить комментарий об этой особенности - НЕЛЬЗЯ отключать кеширование компонентов. Практически не существует задач, которые нельзя решить с включенным кешированием
- Работа с шаблонами
- РЕКОМЕНДУЕТСЯ использовать минимальное количество шаблонов
- РЕКОМЕНДУЕТСЯ подключать
header.phpиfooter.phpиз одного места для всех шаблонов, если это позволяет дизайн и верстка - РЕКОМЕНДУЕТСЯ общие картинки, скрипты и стили шаблонов сохранять в одном месте, например, в
/bitrix/templates/.default/
- Работа с инфоблоками
- ОБЯЗАТЕЛЬНО называть все свойства инфоблоков в верхнем регистре, осмысленно (используя связку сущность-наименование), разделяя слова нижним подчеркиванием. Например:
- Имя пользователя: USER_NAME
- Валюта заказа: ORDER_CURRENCY
- Список заказов: ORDER_LIST