Понимание Битрикс D7

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Понимание Битрикс D7
Понимание ядра D7 в Битрикс: отличия, примеры, преимущества

Небольшая обзорная статья по Битрикс D7. Сначала идёт развернутое  описание и сравнение со старым ядром, затем приводятся примеры  использования.

Этот код автоматически создает таблицу в базе данных если она не  существует, добавляет новую запись о товаре и выводит информацию о  добавленном товаре.

Код
<?php
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');

use Bitrix\Main\ORM\Fields\IntegerField;
use Bitrix\Main\ORM\Fields\StringField;
use Bitrix\Main\ORM\Fields\DatetimeField;
use Bitrix\Main\ORM\Data\DataManager;
use Bitrix\Main\Type\DateTime;
use Bitrix\Main\Application;

class ExampleTable extends DataManager
{
    public static function getTableName()
    {
        return 'my_example_table';
    }

    public static function getMap()
    {
        return [
            (new IntegerField('ID'))
                ->configurePrimary(true)
                ->configureAutocomplete(true),
            (new StringField('PRODUCT_NAME'))
                ->configureRequired(true),
            new IntegerField('PRICE'),
            (new DatetimeField('DATE_CREATE'))
                ->configureDefaultValue(new DateTime())
        ];
    }
}

// Создаем таблицу если не существует
$connection = Application::getConnection();
$tableName = ExampleTable::getTableName();
if (!$connection->isTableExists($tableName)) {
    $entity = ExampleTable::getEntity();
    $entity->createDbTable();
}

// Создание записи
$result = ExampleTable::add([
    'PRODUCT_NAME' => 'Ноутбук Dell XPS',
    'PRICE' => 125000
]);

if ($result->isSuccess()) {
    $id = $result->getId();
    echo "Добавлен товар ID: $id";
    
    // Чтение записи
    $item = ExampleTable::getById($id)->fetch();
    echo "<pre>"; print_r($item); echo "</pre>";
} else {
    print_r($result->getErrorMessages());
}
Результат выполнения:

Этот код можете использовать как демонстрационный, но он небезопасен по нескольким причинам:
  1. Создание таблиц в runtime - В продакшене структура БД должна управляться через миграции, а не создаваться автоматически при выполнении кода.
  2. Отсутствие проверки прав доступа - Код не проверяет права пользователя на создание таблиц в БД.
  3. Уязвимость к SQL-инъекциям - Хотя ORM обеспечивает защиту, прямое использование данных без валидации может быть опасным.
  4. Конфликт имен таблиц - Автоматическое создание таблиц может привести к конфликтам с существующей структурой БД.
  5. Отсутствие обработки ошибок - Нет полноценной обработки возможных ошибок при создании таблицы.
В продакшен-среде такое создание таблиц "на лету" недопустимо и должно выполняться только через системы миграций БД.
Изменено: Валерий Макеев - 09.09.2025 14:04:55
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Разработка корпоративного сайта

от 7 дней

от 40 000 рублей

Разработка сайта без системы оплаты заказов через корзину

* стоимость зависит от наличия верстки, использования готового решения и т.д.