不要在不完整的对象上调用析构函数(PHP 7.1 不兼容的更改)

Do not call destructors on incomplete objects (PHP 7.1 incompatible changes)

Do not call destructors on incomplete objects.

Destructors are now never called for objects that throw an exception during the execution of their constructor. In previous versions this behavior depended on whether the object was referenced outside the constructor (e.g. by an exception backtrace).

我正在对 php 7.1、7.2 进行兼容性检查,但我不知道如何检查我是否应该在这种情况下修复代码流程中的某些内容

我想:

  1. 在构造函数中调用异常。
  2. 预期在代码中调用的析构函数(以某种方式隐式),因为...

谢谢

首先,我认为用户编写的析构函数不是很常见。所以你只需要检查一个 class 如果它有一个 __destruct() 方法。

然后检查它的构造函数,并确保它永远不会抛出异常,或者它有自己的 try/catch 可以清除析构函数通常会为它清除的所有内容。

我不担心它在以前版本中是有条件的部分。只需确保它现在可以正常工作。