定制 composer-fallback/php-http.client-implementation.symfony 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

composer-fallback/php-http.client-implementation.symfony

最新稳定版本:1.1

Composer 安装命令:

composer require composer-fallback/php-http.client-implementation.symfony

包简介

Satisfy "php-http/client-implementation" with packages provided by user, or fallback to "symfony".

README 文档

README

Provides a metapackage for library needing php-http/client-implementation that fallback to a default implementation when user does not meet the initial requirements.

Usage

composer require "composer-fallback/php-http.client-implementation.symfony:*"

Composer will, by preference:

  • use an implementation provided by the user
  • otherwise, fallbacks to symfony/http-client

How does it works

This package contains 2 versions:

  1. The highest 1.1 needs nothing more than your requirements.

  2. The lowest 1.0 triggers install of symfony/http-client.

Composer will choose this highest version when user already has a package that satisfy php-http/client-implementation. Otherwise, composer will choose the lowest version and in that case will download the following packages: symfony/http-client.

What problem does it solve?

You are maintaining a library that need an implementation of php-http/client-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": {
    "php-http/client-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 php-http/client-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 composer-fallback/php-http.client-implementation.symfony, 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 composer-fallback/php-http.client-implementation.symfony (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 composer-fallback/php-http.client-implementation.symfony (1.0)
  - Installing symfony/http-client (1.0)

Alternatives

Contributing

This repository is automatically generated. If you want contributing and submitting an issue or a Pull Request, please use composer-fallback/generator.

统计信息

  • 总下载量: 17.55k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-10-01