neur0toxine / psr.http-message-implementation.nyholm
Satisfy "psr/http-message-implementation" with packages provided by user, or fallback to "nyholm".
Installs: 21 595
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Type:metapackage
This package is auto-updated.
Last update: 2024-11-21 18:08:38 UTC
README
Provides a metapackage for library needing psr/http-message-implementation
that fallback to a default implementation when user does not meet
the initial requirements.
Usage
composer require "Neur0toxine/psr.http-message-implementation.nyholm:*"
Composer will, by preference:
- use an implementation provided by the user
- otherwise, fallbacks to
nyholm/psr7
How does it works
This package contains 2 versions:
-
The highest 1.1 needs nothing more than your requirements.
-
The lowest 1.0 triggers install of
nyholm/psr7
.
Composer will choose this highest version when user already has a package that satisfy psr/http-message-implementation
.
Otherwise, composer will choose the lowest version and in that case will
download the following packages: nyholm/psr7
.
What problem does it solve?
You are maintaining a library that need an implementation of psr/http-message-implementation
,
but you don't want requiring a specific implementation.
ie. You are maintainer of library that use the following composer.json
{ "name": "acme/lib", "require": { "psr/http-message-implementation": "^1.0", } }
When end users requires you library with the following code
{ "name": "end-user/app", "require": { "acme/lib": "^1.0" } }
They probably ends with such error
composer up Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for acme/lib ^1.0 -> satisfiable by acme/lib[1.0]. - acme/lib 1.0 requires psr/http-message-implementation ^1.0 -> no matching package found.
You can ask user to install a random package, it works, but the DX is very bad, and confusing at first.
By using Neur0toxine/psr.http-message-implementation.nyholm
,
users will be able to require their preferred implementation
or fallback to your default choice
Example of user that meet the preferred requirements
{ "name": "end-user/app", "require": { "acme/lib": "^1.0", "third-party/provide-implementation": "^1.0" } }
composer up ... Package operations: 2 installs, 0 updates, 0 removals - Installing acme/lib (1.0) - Installing Neur0toxine/psr.http-message-implementation.nyholm (1.1)
Example of user that fallback to your recommendations
{ "name": "end-user/app", "require": { "acme/lib": "^1.0" } }
composer up ... Package operations: 3 installs, 0 updates, 0 removals - Installing acme/lib (1.0) - Installing Neur0toxine/psr.http-message-implementation.nyholm (1.0) - Installing nyholm/psr7 (1.0)
Contributing
This repository is automatically generated. If you want contributing and submitting an issue or a Pull Request, please use composer-fallback/generator.