Php 所有类方法都应该使用所有依赖项吗?

Php 所有类方法都应该使用所有依赖项吗?,php,dependency-injection,Php,Dependency Injection,这确实是一个关于依赖项注入和方法中依赖项使用的最佳实践问题 以下面的课程为例 class Inviter { protected $repo; protected $emailer; public function __construct(\ExampleRepository $repo, \Emailer $emailer) { $this->repo = $repo; $this->emailer = $emailer; } public

这确实是一个关于依赖项注入和方法中依赖项使用的最佳实践问题

以下面的课程为例

class Inviter {
  protected $repo;
  protected $emailer;

  public function __construct(\ExampleRepository $repo, \Emailer $emailer) {
    $this->repo = $repo;
    $this->emailer = $emailer;
  }

  public function getInvitedMembers() {
    return $this->repo->getInvitedMembers();
  }

  public function sendInvitation() {
    $this->repo->recordInvitation();
    $this->emailer->sendInvitation();
  }
}
当实例化
Inviter
类时,将注入
ExampleRepository
Emailer
的实例并存储它们的引用。但是,
getInvitedMembers
方法只使用
ExampleRepository
,而不使用
Emailer

这很好,还是应该将这些方法重构到另一个类中,以防止创建和注入可能不使用的依赖项的开销

如果您想了解一些上下文,我正在用PHP编程并响应HTTP请求。应用程序将针对每个请求运行,并且每次运行时仅调用其中一个方法


谢谢你的时间

我认为您的类没有遵循,这本身就是重构的原因


避免不必要的对象实例化是可取的,尤其是当实例化这些依赖项的成本很高时(可能需要为
ExampleRepository
创建一个新的数据库连接,否则就不需要)

我认为您的类没有遵循,这本身就是重构的原因


避免不必要的对象实例化是可取的,尤其是当实例化这些依赖项的成本很高时(可能需要为
ExampleRepository
创建一个新的数据库连接,否则就不需要)

这是一个相当广泛的问题,可能会被关闭供参考。不,注入不被使用的依赖项没有真正的问题。然而,如果您有大量依赖项,这可能是一个线索,那么您应该重构您的类并将其拆分。如果不看代码,就无法给出更具体的答案。谢谢您的评论。我将添加一些示例代码。这是一个相当广泛的问题,仅供参考。不,注入不被使用的依赖项没有真正的问题。然而,如果您有大量依赖项,这可能是一个线索,那么您应该重构您的类并将其拆分。如果不看代码,就无法给出更具体的答案。谢谢您的评论。我将添加一些示例代码。感谢您的回答和文章的链接。这为我澄清了这一点。谢谢你的回答和文章的链接。这件事给我澄清了。