2013-03-04 91 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