【发布时间】:2012-03-19 00:37:22
【问题描述】:
你认为这是个好主意吗?
假设您有一个应用程序组件,其他组件使用它来检索/更新数据库中的数据。它基本上是一个具有 get()、set()、update() 方法的类。
该组件在调用时仅在其属性中更新(或设置)数据,并在 __destruct 上更新数据库是否是一个好主意?还是应该在每次设置/更新调用时直接更新数据库?
【问题讨论】:
标签: php destructor
你认为这是个好主意吗?
假设您有一个应用程序组件,其他组件使用它来检索/更新数据库中的数据。它基本上是一个具有 get()、set()、update() 方法的类。
该组件在调用时仅在其属性中更新(或设置)数据,并在 __destruct 上更新数据库是否是一个好主意?还是应该在每次设置/更新调用时直接更新数据库?
【问题讨论】:
标签: php destructor
更新关于对象破坏的数据库对我来说有点像side effect 的软件。也就是说,发生在一个意想不到的、有点不明确的地方的动作。从查看您的代码来看,在调用 __destruct() 时数据库操作正在发生并不明显,即使您显式调用它也是如此。未来的代码维护者(包括您自己)在尝试查找涉及不一致数据的错误时很容易感到困惑,但在查看代码时却看不到任何对数据库的调用或类似于数据交互的方法调用。
我建议不要这样做。
【讨论】:
试图从析构函数中抛出异常(在时间调用 脚本终止)导致致命错误。
那么当你遇到异常时怎么办?无论如何,我觉得这不是一个好主意,你无法控制工作流程,很容易导致调试地狱。
【讨论】: