0

我已经为这个问题苦苦挣扎了好几个小时。如何将我的 Mysql 调用与我的 PHP 代码分开。我使用 PDO 为 Mysql 查询构建了一个社交网络,但 SQL 在每个类中。例如,我有一个类Users和一个方法是获取所有用户

public function fetchUsers() {
    $Database = new Database();
    $Database->setConnection();
    $dbh = $Database->connect()->getHandle();

    $sql = '<query>';
    $stmt = $dbh->prepare($sql);
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if($result) {
        return array('success' => true,     
            'data' => $result);
    }

    return array('success' => false,
        'data' => null);
}

然后我在该类中有另外 10 个方法来实例化数据库类并查询结果。我讨厌那个。我认为我的类应该操作数据或执行其他功能,它只是变得混乱。我查看了 PDO 包装类,但我仍然想将 Mysql 从类中分离出来。我能看到的唯一途径是将它们放入存储库中。所以我可以

class Users {
  getUsers() {
      $repo = new UserRepository();
      $repo->findAll();
  }
}

但是,这感觉没有必要,因为现在我正在实例化 2 个类,而我可以坚持使用进行调用的原始单个类,为什么要创建 2 个对象?我知道它的可读性,但是有人对如何将 Mysql 与我的类完全分开有其他建议吗?

4

0 回答 0