⚡ Бодрого понедельничного всем!

Вчера попросили найти причину сбоя в системе бронирования, которую писал в начале года. Обновили PHP до версии 8.4, и, видимо, что-то пошло не так.

Зашёл разбираться и начал, как положено, с тестов. Разрабатываю через TDD, поэтому логично было ожидать, что они укажут на проблему. Запустил — все зелёные.

Начал копать глубже и нашёл непокрытый тестами «кусок» кода в обработчике и DTO. Как так вышло? Не знаю. Видимо, увлёкся реализацией и отступил от правил TDD.

Суть бага: DTO ожидал объект `DateTime`, а приходил `DateTimeImmutable`. В PHP 8.1 это тихо работало благодаря неявному преобразованию типов, а в PHP 8.4 механизмы стали строже — и функционал выбора дат в бронировании сломался.

Баг исправил быстро, тесты написал. А мысль осталась: будь тесты написаны сразу, не пришлось бы гадать «почему и где».

> Вывод простой: пишите тесты!

Они не просто ловят баги — они экономят ваши нервы и время, когда через полгода меняется версия PHP или приходит новый разработчик.

И не забывайте: начало недели — прекрасный повод начать новое или продолжить старое полезное дело. Пусть ваш код будет надёжным, а тесты — всегда правильно зелёными (избегайте моих ошибок!). Вперёд, к новым свершениям!

#мотивациядлятебя #позитивдлятебя #php #tdd #testing #datetime #bugfix

«А у вас были случаи, когда тесты спасали при обновлении версии PHP или в других случаях? Делитесь в комментариях 👇»

⚡ Бодрого понедельничного всем! | Сетка — социальная сеть от hh.ru