Ответ 1
Вы не можете (с текущими версиями PHP) указать скалярные типы, такие как строка или int. Вы можете указать только класс/интерфейс или массив.
Соответствующая страница руководства: Type Hinting.
Я вижу, по крайней мере, одно большое преимущество использования типа hinting: удобочитаемость. Легче видеть, какой параметр ожидает функция/метод.
Некоторые считают это недостатком, что, если вы не уважаете подсказку типа и не передаете некоторый недействительный параметр, вы получите уязвимую фатальную ошибку. Однако,
- Я лично считаю, что это заставляет разработчика больше уважать ваши интерфейсы
- Это позволяет вашему коду просто работать с полученными параметрами.
- Сгенерированная ошибка
Если ваш вопрос о скорости:
- Принятие решения использовать подсказки типа или не использовать подсказки типа не должно быть результатом соображений производительности. Вы должны использовать или не использовать эту функцию.
- Даже если есть влияние на производительность, оно должно быть довольно минимальным. Я бы сказал, что есть много частей вашего кода, которые вы должны оптимизировать, прежде чем рассматривать это.
В заключение, личное мнение: я довольно часто использую эти намеки типа, именно так:
- Люди, использующие мой код, знают, что они должны пройти (они не всегда читают документацию...)
- Если они не делают того, что ожидается, это терпит неудачу; жесткий; в какой-то мере они сразу замечают
- Мой код не должен проверять, имеет ли принятый параметр правильный тип: я знаю, что это так, как это делает PHP для меня.