我正在开发一个PHP Web应用程序,我正在尝试使用MVC模型。我有很多东西作为“数据库实体”存在 - 一行或一组相关的行,在概念上是一个人类可识别的“东西”。所以我经常尝试在模型类中为该东西提供一个接口。
当然,工厂功能的运行是拥有一个现有实体,从中获取一些数据,有时更新它。但是,当我遇到问题时,我需要创建一个新实体。现有实体的默认数据都不存在!
例如,我的__construct()
方法通常会有参数(即$id
的{{1}}),这样我就可以从数据库中选择数据并从中填充对象的所有属性数据。但是,当我想创建一个新实体时,这些参数的值还不存在!
你们如何处理这种情况?你
WHERE id = $id
,对于新实体有__construct
,对现有实体有create()
答案 0 :(得分:2)
如果您需要能够创建“新”对象,那么我认为默认情况下您的构造函数不应该从数据库加载。由于PHP不支持函数重载(所以你不能有重载的构造函数),你可以只是从构造函数中删除“从数据库填充”代码到为此目的的函数,或者给$id
- type参数一个默认值,指示不应从数据库中填充属性:
function __construct($id = 0)
{
if ($id == 0)
// create with blank properties
else
// load from database
}
然后,如果你想要一个新对象,你只需要不带参数调用它,如果你想从数据库加载,你可以包含id参数。