我正在努力解决这类问题,但我无法通过 Google 找到我的问题的直接答案。
假设我们在数据库中有一个表 'users',它有以下列:id, username, password, real_name
。
然后我的问题就开始了。
我知道我们可以为此创建一个独立的类:
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。
最佳答案
就我个人而言,我的模型(代表数据库表的对象)扩展了一个抽象模型对象,该对象具有 ID 属性和共享静态函数,如 fetchById()。这个抽象模型还有像 save() 这样的方法,它使用对象的 ID 来保存。
您不必在表中有“id”字段,模型的 id 只需是表中唯一的关键字段之一。
我在抽象类中有一个通用的 loadAll() 静态函数,而不是 fetchUsers()。因此,您可以调用 Users::loadAll() 来获取用户的所有模型。这意味着您的大多数模型都可以以相同的方式进行交互并减少代码重复。当然,如果有特定于模型的方法,则需要在子模型中定义它们。
关于php - 正确的方法?数据库实体的 PHP 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21527917/