tgoop.com/phpproglib/5342
Last Update:
♾️ Решайте проблемы правильным способом: Использование инфраструктуры вместо быстрых решений
При импорте CSV-файлов в базу данных возникла проблема с обработкой дат. Для работы с датами использовалась стандартная библиотека Carbon, однако в некоторых случаях парсер вел себя неожиданно. Если дата была указана в формате месяц/день (например, 11/11), Laravel автоматически добавлял текущий год, превращая запись в 2025-11-11. Ожидаемое поведение отличалось — дата без года должна оставаться в исходном виде.
Поиск решения
Сначала были рассмотрены стандартные подходы, включая использование регулярных выражений для проверки формата даты (YYYY-MM-DD, MM/DD/YYYY и другие). Однако такой метод оказался сложным в реализации, поскольку поддержка всех возможных форматов потребовала бы значительных усилий.
Далее было изучено, как сам Laravel выполняет валидацию дат. Оказалось, что он использует две встроенные функции PHP:date_parse()
— анализирует строку и возвращает массив с разобранными данными (год, месяц, день).checkdate()
— проверяет корректность даты.
Финальное решение
Было принято решение заменить Carbon::parse()
на комбинацию date_parse()
и checkdate()
, чтобы обработка дат стала более точной.
Этот случай демонстрирует, что прежде чем разрабатывать сложные решения, стоит изучить, какие методы уже предлагает сам Laravel и PHP. Такой подход экономит время, упрощает поддержку кода и делает его более надежным.
💬Читать подробнее
BY Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Share with your friend now:
tgoop.com/phpproglib/5342