Skip to content

Commit

Permalink
bugfix: conflict with ext-psr since it is not possible to `class_al…
Browse files Browse the repository at this point in the history
…ias` to a non-user interface

There is a PHP extension around which provides all (most?) PSR interfaces without the need of installing them via composer. Since we do not support this extension and since that extension does not make sense anyways (more details later), we explicitly adding a `conflict` to the `composer.json` so that there are no surprises for projects which do have the `psr` extension installed.

closes #124

Now to the problem with the extension:

There are multiple PSR standards around. Many of them do have multiple major versions around. The extension has to follow semver to avoid breaks in upstream projects. So as of now (v1.2.0), it only provides the interfaces for the v1 versions of the PSR standards.
There is no way to provide multiple major versions of the same PSR interface from within one version of the extension.
Therefore, at some point, an upstream project is either stuck with the v1 versions of the PSR standards or the extension needs to create a hilarious amount of major versions to reflect all possible combinations of all major versions (cartesian product).

Lets just take the PSR-11 + PSR-6 example, we already would have 6 major versions around because PSR-11 has 2 major versions and PSR-6 has 3 major versions:

- psr/cache 1.x + psr/container 1.x
- psr/cache 1.x + psr/container 2.x
- psr/cache 2.x + psr/container 1.x
- psr/cache 2.x + psr/container 2.x
- psr/cache 3.x + psr/container 1.x
- psr/cache 3.x + psr/container 2.x

And these are only 2 packages. I lost track on the current progress, but there will be more major versions in the future and thus the amount of major versions for the extension will grow (and with that, the confusion for upstream projects, maintainers, etc.).

We highly recommend to use composer to install the PSR standards per package in the version the upstream project can work with.
**Do not use the `psr` extension**

Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
  • Loading branch information
boesing committed Apr 7, 2022
1 parent d87d260 commit 2ca7927
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
"psr/container-implementation": "^1.0"
},
"conflict": {
"ext-psr": "*",
"laminas/laminas-code": "<3.3.1",
"zendframework/zend-code": "<3.3.1",
"zendframework/zend-servicemanager": "*"
Expand Down

0 comments on commit 2ca7927

Please sign in to comment.