В настоящее время я создаю библиотеку, которая требует использования 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();
}
Да, шаблон адаптера - это то, что я имел в виду под «сквозным классом». Спасибо за ссылку. – FtDRbwLXw6