在MVC中建模数据库实体 - 如何创建它们?

时间:2010-04-07 18:46:49

标签: php database oop

我正在开发一个PHP Web应用程序,我正在尝试使用MVC模型。我有很多东西作为“数据库实体”存在 - 一行或一组相关的行,在概念上是一个人类可识别的“东西”。所以我经常尝试在模型类中为该东西提供一个接口。

当然,工厂功能的运行是拥有一个现有实体,从中获取一些数据,有时更新它。但是,当我遇到问题时,我需要创建一个新实体。现有实体的默认数据都不存在!

例如,我的__construct()方法通常会有参数(即$id的{​​{1}}),这样我就可以从数据库中选择数据并从中填充对象的所有属性数据。但是,当我想创建一个新实体时,这些参数的值还不存在!

你们如何处理这种情况?你

  • 尝试为同一对象中的创建和后续操作提供功能
  • 只有另一个类用于生成实体
  • 避免WHERE id = $id,对于新实体有__construct,对现有实体有create()
  • 别的什么?

1 个答案:

答案 0 :(得分:2)

如果您需要能够创建“新”对象,那么我认为默认情况下您的构造函数不应该从数据库加载。由于PHP不支持函数重载(所以你不能有重载的构造函数),你可以只是从构造函数中删除“从数据库填充”代码到为此目的的函数,或者给$id - type参数一个默认值,指示不应从数据库中填充属性:

function __construct($id = 0)
{
    if ($id == 0)
        // create with blank properties
    else
        // load from database
}

然后,如果你想要一个新对象,你只需要不带参数调用它,如果你想从数据库加载,你可以包含id参数。