在__destruct()上更新数据库?

时间:2012-02-29 14:08:36

标签: php destructor

你认为这是个好主意吗?

假设您有一个应用程序组件,其他组件使用该组件来检索/更新数据库中的数据。它基本上是一个带有get(),set(),update()方法的类。

该组件在调用时仅在其属性中更新(或设置)数据,并且在__destruct上更新数据库,这是一个好主意吗?或者它应该在每次设置/更新调用时直接更新数据库吗?

2 个答案:

答案 0 :(得分:5)

在对象破坏时更新数据库对我来说有点像软件side effect。也就是说,一个在意想不到的,有些不明确的地方发生的动作。通过查看代码,调用__destruct()时发生数据库操作并不明显,即使您明确调用它也是如此。未来的代码维护者(包括你自己)在尝试搜索涉及不一致数据的错误时很容易混淆,但在查看代码时看不到对数据库的任何调用或类似于数据交互的方法调用。

我会反对它。

答案 1 :(得分:2)

  

尝试从析构函数中抛出异常(在时间中调用)   脚本终止)导致致命错误。

那么当你有例外情况怎么样?无论如何,我认为这不是一个好主意,你无法控制工作流程,并且很容易导致调试地狱。