foobar/foobar8

此包已被废弃,不再维护。未建议替代包。

仅适用于 PHP 8*

1.0 2024-08-07 07:58 UTC

This package is auto-updated.

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


README

仅用于包测试...显然。

💿 composer require foobar/foobar8

用法

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

此包的架构是(简化版)

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

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

Prop replace 创建一个隐式的 conflict 规则,并且比 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 版本之间。可以替换任何包,甚至可以替换包的选定版本。