С момента выпуска PHP 7 я снова просматриваю принципы SOLID. В частности, идея принципа подстановки Лисков, который в двух словах гласит, что любое расширение класса должен иметь возможность использоваться везде, где может использоваться его родительский класс.
Частью этого принципа является кодирование для интерфейса, поэтому ваши методы имеют определенные контракты, которым нужно следовать. Однако в PHP 5 и ниже возвращаемые типы не существуют. Таким образом, хотя вы должны иметь те же типы параметров, которые передаются в методы с использованием интерфейсов, вы можете возвращать любой старый тип, который вам нравится. В больших проектах придерживаться этого принципа намного сложнее, чем в других языках.
У меня еще не установлен PHP 7, чтобы проверить это, и я не видел никакой документации в руководстве по PHP или на каких-либо сайтах блогов, рекламирующих новые функции.
Возможны ли возвращаемые типы с интерфейсами в PHP 7?
TypeError
: возвращаемое значениеTest::getAddress()
должно быть экземпляромAddress
,null
, возвращаемым в /in/WEsMG: 5 - person Jared Farrish   schedule 19.02.2016