【问题标题】:modelling database entities in MVC -- how to create them?在 MVC 中建模数据库实体——如何创建它们?
【发布时间】:2010-04-07 18:46:49
【问题描述】:

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

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

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

你们是如何处理这种情况的?你有没有

  • 尝试为同一对象中的创建和后续操作提供功能
  • 有另一个类只用于生成实体
  • 避免使用__construct,并为新实体使用create(),为现有实体使用instantiate()
  • 还有别的吗?

【问题讨论】:

    标签: php database oop


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 2013-02-06
      • 2021-06-13
      相关资源
      最近更新 更多