作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在开发一个 PHP 网络应用程序,我正在尝试使用 MVC 模型。我有很多东西作为“数据库实体”存在——一行或一组相关行,它们在概念上是一个人类可识别的“东西”。所以我经常尝试在模型类中为那个东西提供一个接口(interface)。
当然,工厂功能的运行是拥有一个现有实体,从中获取一些数据,有时更新它。但是,我遇到问题的地方是我需要创建一个新实体。现有实体的默认数据尚不存在!
例如,我的 __construct()
方法通常会有参数(即 $id
for WHERE id = $id
)所以我可以从数据库中选择数据并从该数据填充对象的所有属性。但是,当我想创建一个新实体时,这些参数的值还不存在!
你们是如何处理这种情况的?你有吗
__construct
并为新实体使用 create()
和为现有实体使用 instantiate()
之类的东西最佳答案
如果您需要创建"new"对象的能力,那么我认为您的构造函数不应该默认从数据库加载。由于 PHP 不支持函数重载(因此您不能重载构造函数),您可以将构造函数中的“从数据库填充”代码删除到用于该目的的函数中,或者将 $id
-type 参数一个默认值,指示不应从数据库填充属性:
function __construct($id = 0)
{
if ($id == 0)
// create with blank properties
else
// load from database
}
然后,如果您想要一个新对象,只需不带任何参数地调用它,如果您想要从数据库加载,则包括 id 参数。
关于php - 在 MVC 中建模数据库实体——如何创建它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595030/
我是一名优秀的程序员,十分优秀!