-
Notifications
You must be signed in to change notification settings - Fork 51
Description
Here is the history:
Version 1.0.0
The extension interface did not extend \Throwable
Version 1.1.0
The extension interface did extend \Throwable
Version 1.1.1
The extension interface did not extend \Throwable.
[..] as it leads to inheritance issues when child classes implement the Throwable interface in addition to ContainerInterface under PHP versions prior to 7.4.
Version 2.0.0
The extension interface did extend \Throwable as it should since it is a new major release and we don't need to consider edge cases with the BC layer.
Version 2.0.1
The extension interface does not extend \Throwable.
Removes extension of
Throwablein theContainerExceptionInterfaceto prevent issues under PHP versions < 7.4, where having a concrete instance extendThrowableas well asContainerExceptionInterfacecan lead toE_FATAL.
Except for adding 3 type hints, these are the only changes in this repository. How can I, as an open source maintainer, reliably depend on this package? Or how can I, as a user that like static analyses, know what exception to catch? Catching NotFoundExceptionInterface or ContainerExceptionInterface is technically not valid.
I understand that there was things nobody could expect when releasing 1.1.0. But in my opinion it was a misstake releasing 1.1.1 and 2.0.1. It is way better being predictable and slightly wrong.
Im not seeking to put blame nor do I require an explanation
I just want us to be aware of this and focus on 2 things moving forward:
- Better and longer review processes. It was just a few hours between 1.1.0 and 1.1.1. I doubt there was a chance for a public review and to consider the consequences.
- Version 3 must extend
\Throwable