Интерфейсы с типами возврата и SOLID

С тех пор, как вышел PHP 7, я снова перешел к принципам SOLID. В частности, идея Принцип подстановки Лискова который в двух словах гласит, что любое расширение класса должно быть в состоянии использоваться везде, где может использоваться его родительский класс.

Частью этого принципа является кодирование интерфейса, поэтому ваши методы определили контракты для соблюдения. Однако в PHP 5 и ниже возвращаемые типы не существуют. Таким образом, хотя вы должны передавать одинаковые типы параметров в методы с использованием интерфейсов, вы можете вернуть любой старый тип, который вам нравится. В больших проектах это усложняет соблюдение этого принципа, чем в других языках.

У меня пока нет установленного PHP 7, чтобы проверить это, и я не видел никакой документации в руководстве по PHP или на сайтах блогов, где описываются новые возможности.

Возможны ли типы возврата с интерфейсы в PHP 7?

4

Решение

Да.

В PHP 7 добавлена ​​поддержка объявлений возвращаемых типов. Аналогично аргументу
объявления типа, декларации возвращаемого типа определяют тип
значение, которое будет возвращено из функции. Такие же типы
доступны для деклараций возвращаемого типа, так же доступны для аргумента
объявления типа.

PHP документация

0

Другие решения

Кажется, небольшая путаница как-то произошла от этого вопроса? Независимо от ссылка на сайт Размещенная @Jarrid содержала информацию, которую я пропустил, и, кажется, полностью отвечает моему любопытству.

Объявление типов возврата имеет несколько мотиваторов и вариантов использования:

  • Предотвращение подтипов от взлома ожидаемого типа возврата супертипа, особенно в интерфейсах
0

По вопросам рекламы [email protected]