2013-03-04 90 views
1

我目前正在創建一個需要使用OAuth的庫。 PHP有一個OAuth的擴展,我個人已經安裝並且可以使用,但是我不想要求這個對我的庫的依賴,因爲其他人可能無法使用它。使本機類符合用戶定義的接口?

我創建了一個OAuthInterface接口,我想只是能夠實現此接口通過擴展本地OAuth類並實現它:

namespace My\Lib\OAuth; 

class OAuth extends \OAuth implements OAuthInterface {} 

不過,我有一個很難創建接口正是方法簽名與從本土OAuth類,並不斷收到錯誤,如:

PHP Fatal error: Declaration of OAuth::fetch() must be compatible with My\\Lib\\OAuth\\OAuthInterface::fetch($url, array $params = Array, $method = 'GET', array $headers = Array) in /path/to/My/Lib/OAuth/OAuth.php on line 7 

就是我試圖做不可能的?我是否需要讓我的實現成爲一個傳遞類,它構成了本地實例OAuth而不是擴展它?或者我只是沒有選擇正確的方法簽名?

這裏是接口,如果有幫助:

namespace My\Lib\OAuth; 

interface OAuthInterface 
{ 
    public function fetch($url, array $params = [], $method = 'GET', array $headers = []); 
    public function getLastResponse(); 
} 

回答

1

如果你嘗試匹配你仍然有那種依賴這裏的原生Oauth簽名,因爲一旦本機的OAuth類改變,你必須以反映在你的代碼中。您可以構建自己的界面,然後使用適配器來支持您自己的OAuth版本和本機版本。 Adapter Pattern

+0

是的,適配器模式是我的意思是「傳遞類」。感謝您的參考。 – FtDRbwLXw6 2013-03-04 01:41:57