Типы выполняют три разные функции:
- дизайн
- Документация
- проверка фактического типа
Первые два вообще не требуют никакой проверки типов . Таким образом, даже если PHP не выполняет проверку интерфейсов, они все же будут полезны только по этим двум причинам.
Я, например, всегда думаю о своих интерфейсах, когда я работаю с Ruby, несмотря на то, что у Ruby нет интерфейсов. И мне часто хочется, чтобы у меня был какой-то способ записать эти дизайнерские решения в исходном коде.
С другой стороны, я видел много Java-кода, который использовал интерфейсы, но, очевидно, автор никогда не думал о них. Фактически, в одном случае из отступа, пробела и некоторых оставшихся комментариев в интерфейсе можно было видеть, что автор фактически только что скопировал и вставил определение класса и удалил все тела методов.
Теперь к третьему пункту: PHP на самом деле делает проверки типов интерфейсов. То, что он проверяет их во время выполнения, еще не означает, что он вообще не проверяет тип .
И, фактически, он даже не проверяет их во время выполнения, он проверяет их при времени загрузки , что происходит до времени выполнения. И разве «проверка типов не происходит во время выполнения, но до этого» в значительной степени само определение статической проверки типов?