Сколько стоит час процессорного времени?
, Сколько делает час времени программиста, стоят?
Динамические языки часто поощряют Duck Typing , в котором методы объекта определяют способ его использования, а не явный контракт (например, интерфейс).
Поскольку вы можете вызывать любой метод для любого объекта на динамическом языке, я не уверен, как интерфейсы будут задействованы каким-либо действительно полезным способом . Нет никаких контрактов, которые нужно применять, потому что все определяется во время вызова - объект может даже изменить, соответствует ли он «контракту» на протяжении всей своей жизни, поскольку методы добавляются и удаляются во время выполнения. Вызов завершится ошибкой, если объект не выполняет контракт, или завершится ошибкой, если он не реализует член - оба случая одинаковы для большинства практических целей.
То же самое для PHP; вам действительно не нужны интерфейсы. Но они существуют для архитектурных нужд. В PHP вы можете указать подсказки типа для функций, которые могут быть полезны.
Во-вторых, интерфейс - это контракт. Это формальный договор, что все объекты из этого интерфейса имеют эти функции . Лучше убедиться, что ваши классы соответствуют этим требованиям, чем помнить: « мм, этот класс имеет isEnabled ()
, а другой - checkIfEnabled ()
». Интерфейсы помогают стандартизировать. Другим, работающим с производным объектом, не нужно проверять, является ли имя isEnabled
или checkIfEnabled
(лучше позволить интерпретатору уловить эти проблемы).