В этом руководстве описаны рекомендуемые техники при разработке под платформу 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 //ИБ с комментариями пользователей const COMMENTS_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)));
-
НЕ РЕКОМЕНДУЕТСЯ использовать прямые запросы к базе данных без крайней необходимости
-
если к файлу не предусмотрен прямой доступ ОБЯЗАТЕЛЬНО в первой строке файла добавить
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
- Работа с компонентами
- РЕКОМЕНДУЕТСЯ давать шаблонам компонентов осмысленные названия и в каждом проекте придерживаться общего стиля. Например,
Раздел/страница_сайта.Название.Тип
Примеры: index.user.auth
profile.orders.list
cart.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