2016-02-18 1 views
4

Je reprends les principes SOLID depuis la sortie de PHP 7. En particulier, l'idée du Liskov substitution principle qui, en un mot, indique que toute extension d'une classe devrait pouvoir être utilisée partout où sa classe parente peut être utilisée.Interfaces avec les types de retour et SOLID

Une partie de ce principe consiste à coder une interface, de sorte que vos méthodes ont défini des contrats auxquels adhérer. Cependant, dans PHP 5 et ci-dessous, les types de retour n'existent pas. Ainsi, bien que vous deviez avoir les mêmes types de paramètres passés dans des méthodes utilisant des interfaces, vous pouvez retourner n'importe quel ancien type que vous aimez. Avec de grands projets, cela rend le maintien de ce principe beaucoup plus difficile que d'autres langues.

Je n'ai pas encore installé PHP 7 pour le tester, et je n'ai pas non plus vu de documentation dans le manuel de PHP ou sur les sites de blogs qui traitent les nouvelles fonctionnalités.

Les types de retour sont-ils possibles avec interfaces dans PHP 7?

+0

Voici la RFC: https://wiki.php.net/rfc/return_types, qui indique qu'elle cible la version 7. –

+0

https://github.com/php/php-src/pull/997 –

+0

Je pense que "oui" le résume. Beau concept de question bien. –

Répondre

0

Semble un peu de confusion a en quelque sorte eu de cette question? Quoi qu'il en soit, le link @Jarrid posté contenait les informations que j'ai ratées et semble complètement répondre à ma curiosité.

Declaring return types has several motivators and use-cases:

  • Prevent sub-types from breaking the expected return type of the super-type, especially in interfaces
0

Oui, ils le sont.

PHP 7 adds support for return type declarations. Similarly to argument type declarations, return type declarations specify the type of the value that will be returned from a function. The same types are available for return type declarations as are available for argument type declarations.

PHP Documentation