【问题标题】:Is it bad practice to call other classes in the construct在构造中调用其他类是不好的做法吗
【发布时间】:2019-11-29 16:51:03
【问题描述】:

我最近尝试了解有关 OOP 的更多信息,但我不确定以下内容。

像这样调用构造中的其他类是不好的做法:

class Main{
   function __construct(){
      $this->db = new DatabaseConnection(); 
      $this->rp = new ResponseHandler();
   }

   public function SelectUser( $user_id ){
      ...
      $this->db->query('...') // `query` is a method in DataBaseConnection
      ...
      return $this->rp->msg('...'); // `msg` is a method in ResponseHandler
}

在我看来,这似乎是一种简单而好的方法,但我不知道这是否真的是/一种正确的 OOP 方法。

【问题讨论】:

  • 是的,因为现在该类依赖于其他类。阅读dependency injection 了解更好的方法。
  • 这个问题更多是基于意见

标签: php class oop constructor


【解决方案1】:

如果您知道 Main 类的方法需要 DatabaseConnection 和 ResponseHandler 来执行它们的工作,恕我直言,您的方法完全可以。

因此,您可以对类的用户隐藏实现。这就是 OOP 的全部意义所在。

我不喜欢通过构造函数进行依赖注入的想法,因为它迫使调用者链上的每个人都知道您的 Main 类需要哪些其他类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2019-10-30
    • 2021-02-18
    • 2014-08-21
    • 2014-08-15
    • 2015-07-10
    相关资源
    最近更新 更多