Включили declare(strict_types=1) во всех файлах, и в проде посыпались TypeError
В legacy-проекте одним коммитом добавили declare(strict_types=1) во все 2 000 файлов. Тесты покрывают 20% кода. После релиза в проде посыпались TypeError: строки из запросов и базы передавались в функции с типом int, и раньше PHP приводил их сам.
Как стоило включать строгую типизацию?
- Постепенно по модулям, с анализатором и тестами
- Не включать strict_types в legacy никогда
- Включить сразу, но ловить TypeError глобально
- Убрать все типы из сигнатур функций
