0

如果这很重要,我正在使用 PHP,并且我使用名为 Product 的类来跟踪产品。构造函数接受一个参数,即产品的 id。然后构造函数进入数据库并获取产品的所有信息并设置该实例的所有属性。完成所有操作后,用户可以调用 save() 函数,新信息将更新数据库中的产品

如果在构造函数中将产品的 id 设置为零,则产品类会理解这是一个新产品,并且不会获得任何变量。它允许您设置所有变量并验证它们。然后,当您调用 save() 函数时,它会创建产品并将产品的 id 设置为数据库中行的新 id。

我面临的问题是,如果产品正在创建并且由于没有 ID 而尚未保存,则无法调用某些函数。因此,目前每次调用某些函数时,我都必须检查 ID > 0。

我想知道将类拆分为仅用于创建的类和用于使用现有产品(例如 Product 和 CreateProduct)的类是否是个好主意。这样做的好处是 Product 类可以始终假定产品已经创建,因此我不必检查它,并且所有验证方法都可以移至单独的类并更好地管理。

只是想听听一些意见和任何建议。谢谢,亚历克斯

4

1 回答 1

1

简而言之,是的,我相信是的。听起来一般行为听起来像是未保存产品成为产品子类的候选者,但这也很大程度上取决于产品是否在脚本执行过程中定期从已保存转换为未保存。在这种情况下,您可以通过始终$product->save()返回正确的对象实例来解决此问题。

一般来说,您也可以从这种模式中受益,因为将来如果您添加某种 Product::find($id) 方法,您可以根据从数据库加载的数据返回一个更具体的子类,或者0 的情况下,返回 a CreateProduct

我的学校认为通过数据库 ID 初始化一个类通常是一种尴尬的做法,同时为可能具体的东西创建分支逻辑。“id是否存在?如果id不存在我会抛出异常吗?如果id不存在,我是否只需将id设置为null?”

于 2013-05-30T21:03:07.803 回答