foobar/foobar7

该包已被废弃且不再维护。未建议替代包。

仅适用于PHP 7*

1.0 2024-08-07 07:24 UTC

This package is auto-updated.

Last update: 2024-08-08 17:45:17 UTC


README

仅用于包测试目的...很明显。

💿 composer require foobar/foobar7

用法

在从包迁移到另一个包时,了解composer架构(即composer.json)可能包含replace属性可能会有所帮助。

foobar/foobar8包的架构是(简化版)

{
  "name": "foobar/foobar8",
  "require": {
    "php": "^8"
  },
  "replace": {
    "foobar/foobar7": "*"
  }
}

其中replace表示foobar/foobar8完全替换了foobar/foobar7,允许Composer将foobar/foobar8视为foobar/foobar7的即插即用替代品。

属性replace创建了一个隐式的conflict规则,并且比provide更有用,因为provide有不同的目的(用于实现虚拟接口)。

在此处阅读Composer架构文档:Composer replace

迁移

先决条件(或当前状态)

  • 在PHP 7上运行的项目
  • foobar/foobar7已安装(即项目所必需)

迁移

  1. 切换到PHP 8
  2. composer require foobar/foobar8
  3. (可选)移除foobar/foobar7需求

这将满足所有依赖foobar/foobar7的其他库,而不仅仅是项目本身。

最终结果可能类似于以下内容

{
  "type": "project",
  "require": {
    "php": "^8",
    "foobar/foobar7": "^1",
    "foobar/foobar8": "^1"
  }
}

当重新实现较旧的库或为较旧的架构提供回滚版本时很有用。

在其他场景下,例如重新实现第三方库时,也可能很有用。
一个例子是维护较慢的库,但发现了一个严重缺陷。一个人可以自行获取和分发补丁,并仅替换某个版本。一旦第三方包更新,它将再次使用,而无需对使用项目的更改。

请注意,替换不仅适用于PHP版本。可以替换任何包,甚至可以替换包的选定版本。