【发布时间】:2017-08-07 11:23:52
【问题描述】:
大家好
我知道 Stackoverflow 可能不是问的正确地方,如果有另一个 Stackexchange 组在哪里 这个问题比较合适,那么请告诉我。
所以,我正在努力学习 OOP。我想我理解得很好,但有一件事我真的想不通 找出正确的方法是什么,那就是数据库的处理。
所以,我有点困惑应该在哪个班级上学。
假设我有一个 db 类。在这个类中,我在构造函数中连接到数据库。现在让我们说 我有一个用户类。
那么现在的问题是:
我应该在哪里输入查询,例如创建一个新用户?我应该在用户类中创建一个方法,
或者我应该在 DB 类中创建一个方法?如果在 DB 类中,它真的应该是像create_user() 这样的方法吗?
或者它应该更像是query 这样的全球性的东西,我可以在其中传递我想要的任何查询。
这里,例如来自 Github 的一个项目:
https://github.com/christran/PHP-OOP-Login-Register-System/blob/master/classes/user.php
如您所见,所有查询方法都在 db.php 中,而从 user.php 他只是在调用这些方法。那么这是正确的方法吗?
或者根本不重要?可能,这些方法中的任何一个都比另一个“更多”OOP?
这实际上让我很困惑,我不明白有什么更好的方法。我搜索了很多,但从来没有 找到一篇关于这个特定问题的文章。
所以我做了什么,我在 Github 上寻找项目并查看他们的代码,他们是如何解决问题的...... 但是使用这种方法,我只会更加困惑,因为你看到了两者。
这只是编码人员的偏好吗?
非常感谢您的帮助。祝你今天过得愉快! :)
这是我的意思的一个小例子:
在用户类中查询:
class user {
private function createUser() {
//SQL Query here (prepared statements etc...)
}
}
或者:
class user {
private function createUser() {
// Call to db.class to insert_method() ...
}
}
【问题讨论】:
-
对象关系映射不是 OOP。 OOP 是将系统分解为可通信的状态机。 ORM 是关于重塑网络数据模型的,因为开发人员不了解数据的关系模型。最好将数据库视为事实的代表,而不是对象的代表。
标签: php database oop mysqli pdo