2012-12-04 105 views
0

我正在将一些旧的过程代码转换为OOP。立即设置为对象的属性

可以说我有一些程序代码,它将记录标记为垃圾并记录完成的时间。

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

我推测,从OOP的各种书籍,在面向对象的范例你:

  1. “发现”的具体项目为对象,然后
  2. 修改它的属性,然后
  3. 使用通用的“更新”方法上的ORM映射器

这是禁忌其属性保存到分贝st以过程/数据库为中心的方法在我的代码中使用,我运行SQL查询来更新特定记录,其中db的特定值为特定更改的属性。

因此,可以说我想将此代码转换为面向对象的范例。

  1. 我找到它的ID我的对象,
  2. 修改其属性:
    • 我的isTrashed属性设置为TRUE
    • 我设置trashedDateTimestamp属性???

呵呵!?

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

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

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

或者这个特性在OO范式中被证明是不可能的,我应该使用类似'events observer'的东西来代替。

总之 - 如何将NOW以合理的精度存储到对象属性中?

回答

1

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

+0

我想我明白了。所以DateTime对象以某种方式与数据库上使用的时间同步? –

+1

@JW .:不,因为你不应该介意MySQL时间(因为它不是运行你的应用程序的服务器,而是服务器的时间),把所有的时间存储为服务器时间,并且用它来完成。 –

+0

谢谢。 _database time_是我在稳定转换到OOP工作方式期间所执行的最后一个以数据库为中心的事情之一。我会有一些辅导来帮助我放开它。 :o) –