关于将PHP与SQL分离的建议

关于将PHP与SQL分离的建议,php,class,pdo,repository,Php,Class,Pdo,Repository,我为这个问题挣扎了几个小时。 如何将Mysql调用与PHP代码分离。 我使用PDO为Mysql查询构建了一个社交网络,但SQL在其中 每节课。例如,我有一个类Users,方法是get all Users public function fetchUsers() { $Database = new Database(); $Database->setConnection(); $dbh = $Database->connect()->getHandle()

我为这个问题挣扎了几个小时。 如何将Mysql调用与PHP代码分离。 我使用PDO为Mysql查询构建了一个社交网络,但SQL在其中 每节课。例如,我有一个类
Users
,方法是get all 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);
}

然而,这感觉是不必要的,因为现在我实例化了2个类,而我可以使用最初的单个类来进行调用,为什么要创建2个对象呢?我知道它的可读性,但是有人对如何将Mysql从我的类中干净地分离出来还有其他建议吗

可读性和组织性是关键。你对“实例化2个类”的抵制是错误的。结构简单,易于理解,易于调试。从长远来看,每次都是赢家。内存很便宜,而且不管怎样,第二节课的开销也不会有什么不同。我很喜欢你的答案。我知道我对小事想得太多了,但我认为在更大的计划中,它们可能会成为一个问题。内存现在便宜了好几天,我想我会走repo路线。我不明白你说的“将Mysql与类分开”的意思,但通常它指的是类似ORM的方法。您可能想看看ORM或一些PHP框架,它们中的每一个都有自己的ORM或AR实现。Yii和LAraval是过去最流行的教义,这是一条学习曲线。它必须是按请求定制的,但我想我是在模仿类似的东西。
class Users {
  getUsers() {
      $repo = new UserRepository();
      $repo->findAll();
  }
}