Mercury Effirium, я наверное слишком сложно для вас написал в ответе.
Надо было просто написать что если в getUserEmail() передать не объект класса Controller (или его наследник), то РНР выдаст ошибку. Так понятнее?
То есть это не "комментарий для программиста", а комментарий для самого РНР. ТИ используется оно не в коде, а при выполнении программы. РНР проверяет тип переменной и выдает ошибку, если тип не тот