если создать инструмент, который запретит такие штуки - то будет норм) ошибка "переменная х уже выше объявлена как bool. используйте другую переменную"
Такого инструмента нет в самом языке. Это ничем не проверенные гарантии
в один момент времени одна переменная может иметь 1 тип. осталось только писать так, чтобы переменная имела 1 и только 1 тип от начала и до конца своей жизни. и будет норм.
Строгой типизации переменных как раз не хватает, чтобы отшить возможные проблемы с типами.
Но так как все проверки в пыхе идут лишь во время работы скрипта это всё мало поможет без псалма.
какой смысл держать в одной переменной int|true? ради проверок вида if($x === true) ... ? просто для экономии места под еще одну переменную флага стало быть.
если создать инструмент, который запретит такие штуки - то будет норм) ошибка "переменная х уже выше объявлена как bool. используйте другую переменную"