Imagine we want to use the following library like this:
use GrahamCampbell\GitHub\GitHubManager;
class Foo
{
private GitHubManager $github;
public function __construct(GitHubManager $github)
{
$this->github = $github;
}
public function bar(): array
{
$this->github->issues()->show('GrahamCampbell', 'Laravel-GitHub', 2);
}
}
Does it makes sense to create an interface like:
interface GitHubManagerInterface
{
public function showIssues(): array;
}
Then implement it and bind the implementation to the interface and use it in my code like the following?
class Foo
{
private GitHubManagerInterface $github;
public function __construct(GitHubManagerInterface $github)
{
$this->github = $github;
}
public function bar(): array
{
$this->github->showIssues('GrahamCampbell', 'Laravel-GitHub', 2);
}
}
Or there is a better way to prevent coupling? Or it's over engineering? :)
Aucun commentaire:
Enregistrer un commentaire