Если я правильно понимаю, что на самом деле делает хинтинг типа в php, он проверяет тип и выдает ошибку, если он не соответствует объявленному.
Это кажется мне больше, чем просто «подсказкой» — больше похоже на (полную) «проверку» (например, Java — мой основной опыт программирования).
Итак, мне интересно, что я что-то упустил или каково было намерение назвать это так.
PHP не проверяет типы переменных и типы не объявляются в объявлении переменных. PHP всегда пытается преобразовать переменную в правильный тип при необходимости. Если вы str_replace на число, число будет временно преобразовано в строку.
Как вы можете видеть там http://php.net/manual/en/language.types.type-juggling.php
Так что это как раз противоположность Java.
Других решений пока нет …