Полезные классы ядра: 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 и работа с файлами
Материалы
Официальная документация
-
HTTP-клиент Новая дока
-
Работа с изображениями Новая дока
Материалы BXMax
Проверь себя
В админке заказ создан в 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: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить