对吗?数据库实体的PHP对象
我正在与这种问题作斗争,我无法通过谷歌找到我问题的直接答案 假设我们在数据库中有一个“users”表,它有以下列:对吗?数据库实体的PHP对象,php,mysql,oop,Php,Mysql,Oop,我正在与这种问题作斗争,我无法通过谷歌找到我问题的直接答案 假设我们在数据库中有一个“users”表,它有以下列:id、用户名、密码、实名 然后我的问题就开始了 我知道我们可以为它制作一个独立的课程,比如: class User { private $_id; private $_username; private $_password; private $_real_name; // getters // setters } 现在,我应该在
id、用户名、密码、实名
然后我的问题就开始了
我知道我们可以为它制作一个独立的课程,比如:
class User
{
private $_id;
private $_username;
private $_password;
private $_real_name;
// getters
// setters
}
现在,我应该在该类上添加fetchById之类的函数吗?我是说,这是一个好的做法吗
public function fetchById($id)
{
// validate param
// query database
// copy results to appropriate properties
}
还是应该由另一个类完成,比如UserManager?然后对于每个结果,我们将数组结果转换为该对象的
另外,我应该将fetchUsers之类的函数放在哪里,它将从数据库中获取多个用户?处理同一实体的多个记录的函数
我正在寻找代码效率和性能
我知道“一些”想法,但我不能证明这是正确的。我需要帮助
我目前正在使用CodeIgniter,但我认为这个问题通常是PHP OOP的问题。为表管理构建一个类,为实体构建另一个类
请参阅其他ORM,如doctrine、Prope或框架ORM,如cakephp。就我个人而言,我的模型(表示数据库表的对象)扩展了一个abstractModel对象,该对象具有ID attirbute和共享的静态函数,如fetchById()。这个抽象模型也有类似save()的方法,它们使用对象的ID进行保存
表中不必有“id”字段,模型的id必须是表中唯一的键字段之一
在抽象类中有一个通用的loadAll()静态函数,而不是fetchUsers()。因此,您可以调用Users::loadAll()来获取用户的所有模型。这意味着您的大多数模型可以以相同的方式进行接口,并减少代码的重复。当然,如果有特定于模型的方法,那么,你需要在子模型中定义它们。为什么不看一些像口才或教义之类的PHP ORM,来看看它们是怎么做的?你对编写自己的数据库对象抽象的指南更感兴趣,或者你会考虑采用一个专门针对你的情况的现有库吗?描述?请说明。在我开始使用别人的库/代码/作品之前,我想先了解这些东西。你可能感兴趣。这个问题是关于实现ACL的,但答案值得一读。