конструктор — не вызывать деструкторы для незавершенных объектов (несовместимые изменения в PHP 7.1)

Не вызывайте деструкторы на незавершенные объекты.

Деструкторы теперь никогда не вызываются для объектов, которые выдают исключение во время выполнения своего конструктора. В предыдущих версиях это поведение зависело от того, была ли ссылка на объект вне конструктора (например, путем обратной трассировки исключения).

Я делаю проверку совместимости для php 7.1, 7.2, и я не делаю, как проверить, должен ли я что-то исправить в потоке кода для этого случая

Я полагаю:

  1. Исключение вызывается в конструкторе.
  2. Деструктор (каким-то образом неявно) ожидал вызова в коде, потому что …

Спасибо

1

Решение

Прежде всего, я думаю, что пользовательские деструкторы не очень распространены. Таким образом, вам нужно только изучить класс, если у него есть __destruct() метод.

Затем проверьте его конструктор и убедитесь, что он либо никогда не генерирует исключение, либо имеет свой собственный try/catch это убирает все, что деструктор обычно очищает для него.

Я бы не стал беспокоиться о том, что это будет условно в предыдущих версиях. Просто убедитесь, что он работает чисто сейчас.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]