将NOW设置为对象的属性

时间:2012-12-04 17:20:21

标签: oop orm datamapper

我正在将一些旧的程序代码转换为OOP。

假设我有一些程序代码将记录标记为已删除并记录完成的时间。

UPDATE
toys
SET
is_trashed = 1,
trashed_date_timestamp = NOW()
WHERE
id = ??

我从OOP上的各种书中收集到,在面向对象的范例中,你:

  1. '找到'特定项目作为对象,然后
  2. 修改其属性,然后
  3. 使用ORM映射器上的通用“更新”方法将其属性保存到数据库
  4. 这与我的代码中使用的以过程/数据库为中心的方法形成对比,在我的代码中运行SQL查询以使用db中的特定值更新特定记录以进行特定更改属性。

    所以,假设我想将此代码转换为面向对象的范例。

    1. 我通过id找到我的对象,
    2. 修改其属性:
      • 我将isTrashed属性设置为TRUE
      • 我将trashedDateTimestamp属性设置为???
    3. 呵呵!?

      当我尝试将trashedDateTimestamp属性设置为 NOW 时,会打开一大堆问题。

      • 现在是什么?我宁愿确保它是数据库时间的NOW(),而不是服务器上的NOW。
      • 玩具对象的客户端如何处理获取和设置trashedDateTimestamp属性?

      我可以想出很多方法来“抚摸这只猫”,但想知道是否有任何模式可以解决这个问题。

      或者这个功能在OO范例中被证明是不可能的,我应该使用类似'事件观察者'的东西。

      简而言之 - 如何以合理的准确度将 NOW 存储到对象属性中?

1 个答案:

答案 0 :(得分:1)

您存储DateTime对象而没有任何传递的参数。 DateTime对象默认为当前时间。