Response можно устанавливать флаги для декодирования JSON.💡 В чём суть
Раньше метод
$response->json() просто парсил JSON с настройками PHP по умолчанию. Это могло приводить к скрытым проблемам:Тихие ошибки:
json_decode() по умолчанию молча возвращает NULL при ошибке в структуре JSON, что усложняет отладку.Потеря данных: PHP может некорректно обрабатывать очень большие числа (например,
transaction_id или Snowflake ID из Discord/X), что ведёт к повреждению данных.Как теперь можно решить
В метод
json() добавлен параметр flags. Это позволяет передавать стандартные константы PHP для управления парсингом.❗️ Сценарии использования
✅ Защита от потери больших чисел (часто встречается в платежных системах и соц. сетях):
$data = $response->json(flags: JSON_BIGINT_AS_STRING);
Большие целые числа будут возвращены как строки, что гарантирует их сохранность.
✅ Строгий режим для отладки:
$data = $response->json(flags: JSON_THROW_ON_ERROR);
При малейшей ошибке в JSON будет выброшено исключение, а не возвращён NULL.
✅ Комбинированный режим для продакшена:
$data = $response->json(
flags: JSON_BIGINT_AS_STRING | JSON_THROW_ON_ERROR
);
И данные целы, и ошибки не пройдут незамеченными.
⚡️ Что изменилось для разработчика
Раньше для такого контроля нужно было вручную парсить
$response->body(). Теперь всё решается одним параметром встроенного метода.Небольшое изменение, которое устраняет целый класс проблем при интеграции с реальными, неидеальными API.
📱 @dev_notes_ru
#Laravel #Laravel12