在 __destruct() 中更新数据库?

6

你认为这是个好主意吗?

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

当被调用时,该组件是否仅在其属性中更新(或设置)数据,并在__destruct上同时更新数据库?还是应该直接在每次设置/更新调用时更新数据库?

2个回答

5

在对象销毁时更新数据库对我来说有点像软件副作用。也就是说,一个在意料之外且不太明确的地方发生的操作。即使你显式调用__destruct(),从代码中观察不到数据库操作正在发生,甚至没有看到任何调用数据库或类似数据交互的方法调用,未来的代码维护者(包括你自己)在试图查找涉及不一致数据的错误时可能会很容易混淆。

我建议不要这样做。


2

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

那么当您有异常时怎么办?我认为这不是一个好主意,因为您无法控制工作流程,而且很容易陷入调试困境。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接