Oop 现在设置为对象上的属性

Oop 现在设置为对象上的属性,oop,orm,datamapper,Oop,Orm,Datamapper,我正在将一些旧的过程代码转换为OOP 假设我有一些程序代码,将记录标记为垃圾并记录完成的时间 UPDATE toys SET is_trashed = 1, trashed_date_timestamp = NOW() WHERE id = ?? 我从各种OOP书籍中收集到,在面向对象的范例中,您: “查找”作为对象的特定项,然后 修改其属性,然后 使用ORM映射器上的通用“更新”方法将其属性保存到db 这与代码中使用的以过程/db为中心的方法形成对比,在代码中,我运行SQL查询,使用db中的

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

假设我有一些程序代码,将记录标记为垃圾并记录完成的时间

UPDATE
toys
SET
is_trashed = 1,
trashed_date_timestamp = NOW()
WHERE
id = ??
我从各种OOP书籍中收集到,在面向对象的范例中,您:

  • “查找”作为对象的特定项,然后
  • 修改其属性,然后
  • 使用ORM映射器上的通用“更新”方法将其属性保存到db
  • 这与代码中使用的以过程/db为中心的方法形成对比,在代码中,我运行SQL查询,使用db中的特定值更新特定记录,以实现特定的属性更改

    假设我想把这段代码转换成面向对象的范例

  • 我通过id找到我的对象,然后
  • 修改其属性:
    • 我将isTrashed属性设置为TRUE
    • 我将trashedDateTimestamp属性设置为
  • 当我尝试将trashedDateTimestamp属性设置为NOW时,它会引发一大堆问题

    • 现在是什么?我希望确保它是数据库时间中的NOW(),而不是服务器上的NOW()
    • 玩具对象的客户端如何处理获取和设置trashedDateTimestamp属性
    我可以想出很多方法来“剥这只猫的皮”,但我想知道是否有任何模式可以解决这个问题

    或者这个特性在OO范式中被证明是不可能的,我应该使用类似“事件观察者”的东西来代替


    简言之,现在如何以合理的精度存储到对象属性上?

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

    我想我明白了。因此,DateTime对象以某种方式与数据库上使用的时间同步?@JW:否。因为您不应该真正在意MySQL时间(因为它不是运行您的应用程序的时间,而是服务器的时间),请将所有时间存储为服务器时间,然后结束。谢谢。数据库时间是我在稳定地转换为OOP工作方式的过程中所坚持的最后一个以数据库为中心的东西。我将得到一些辅导来帮助我摆脱它o) 详细信息因您使用的ORM而异。但是,通常的想法是,如果您有一个具有日期/时间属性的对象,并且您有一个具有相应列的表。在这种情况下,如果您在保存期间未提供此列的值,则在保存/更新时,它会自动默认为数据库时间。@NazarMerza,听起来很有趣。你可以把它扩展一下作为一个可能的答案?