2016-02-18 113 views
4

自PHP 7發佈以來,我一直在重新討論SOLID原則。特別是Liskov substitution principle的概念,簡而言之,它指出任何一個類的擴展應該可以在任何可以使用其父類的地方使用。返回類型和SOLID的接口

這個原則的一部分是編碼到一個接口,所以你的方法已經定義了契約來粘附。但是,在PHP 5及以下版本中,返回類型不存在。因此,儘管您必須使用接口將相同的參數類型傳遞到方法中,但您可以返回任何您喜歡的舊類型。通過大型項目,這使得遵守這一原則比其他語言更難。

我還沒有安裝PHP 7來測試這一點,也沒有在PHP手冊或任何博客網站上看到任何有關新功能的文檔。

返回類型可能與接口在PHP 7中?

+0

以下是RFC:https://wiki.php.net/rfc/return_types,它表示它的目標是v7。 –

+0

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

+0

我認爲「是」總結。不錯的問題概念。 –

回答

0

似乎有點混亂,不知何故從這個問題發生?無論如何,發佈的link @Jarrid包含了我錯過的信息,似乎完全回答了我的好奇心。

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

是的,他們是。

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