Собственно: https://stitcher.io/blog/we-dont-need-runtime-type-checks
Для Ъ: проверка типов во время исполнения в РНР достигает своего предела: дженериков нет и, вероятно, не будет в ближайшее время.
Подход 1: вынести работу с дженериками в отдельный статический анализатор (в общем: работать с дженериками не во время исполнения), но такой подход несёт одну проблема: часть кода проверяется во время исполнения, а часть статически.
Подход 2 можно попробовать проверять все типы исключительно статически, но это потребовало бы изменения самого языка (для отключения проверки типов во время исполнения):
Никита Попов:
I think that would be a good thing… but then again, lots of things would be different in PHP if we’d do a clean-slate redesign now. We have to work within the constraints we have, somehow.
Тем не мене, автор заявляет, что считает это достижимым.
Подход 3: использовать статическую проверку (но фактически другого языка) вместе с компиляцией в РНР (как делает тайпскрипт, но он компилирует в джаваскрипт). При чём опыт подобных программ уже есть.
So, this is where we are today:
* PHP's runtime type checker is reaching its limitations (generics being the most
obvious example)
* There are already runtime-ignored types (doc blocks), but there's no consensus
on syntax and usage across static analysis communities
* Runtime-ignored types require a mind-shift that many developers find difficult
at this point
* Transpiling PHP is possible, it's been done before, but it's a massive
undertaking and likely to fail again if tried without proper support