Middle Bitrix Framework D7 Рекомендуется

Полезные классы ядра: Type, Text, Web, File

Пространство имен Bitrix\Main предоставляет системные утилиты: Type\DateTime с учетом часовых поясов и культуры сайта, строгий валидатор Web\Json, манипулятор адресами Web\Uri и сетевой клиент Web\HttpClient. Использование готовых классов ядра гарантирует корректную сериализацию данных и защищает от типовых ошибок конвертации типов при интеграциях.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Bitrix\Main\Type\DateTime и работа с датами
  • 2
    Bitrix\Main\Web\Json, Uri, HttpClient
  • 3
    Bitrix\Main\Text: обработка строк и emoji
  • 4
    Bitrix\Main\File\Image и работа с файлами

Материалы

Проверь себя

В админке заказ создан в 15:00, а в письме, которое отправил агент, стоит 12:00. Где искать причину?

В преобразовании DateTime в строку. Если в настройках включены часовые пояса, toString() переводит время в пояс пользователя, а в агенте пользователя нет, и выводится серверное время. format() пояс не трогает никогда. Для писем фиксируйте пояс явно через toUserTime() или disableUserTime().

Внешний API перестал отвечать, и вместе с ним на минуту зависла страница сайта. Почему и что менять?

HttpClient по умолчанию ждёт соединение 30 секунд и данные 60 секунд. Таймауты задают в конструкторе клиента или в секции http_client_options файла .settings.php, а сам вызов из хита переносят в фоновую задачу или агента.

Чем Json::decode() отличается от json_decode(), кроме namespace?

Возвращает всегда ассоциативный массив и на невалидной строке бросает ArgumentException вместо null. Json::encode() по умолчанию экранирует угловые скобки, амперсанд и кавычки, поэтому его вывод безопасно вставлять в HTML, но он отличается от json_encode() побайтно.

Зачем в Image вызывать getInfo() до load(), если load() и так вернёт false на битом файле?

getInfo() читает размеры и MIME без загрузки изображения в память, а exceedsMaxSize() отсекает файл, который положит PHP по памяти ещё до декодирования. load() на таком файле вернёт false, но ресурсы уже потратит.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти