foobar / foobar8
此包已被废弃,不再维护。未建议替代包。
仅适用于 PHP 8*
1.0
2024-08-07 07:58 UTC
Requires
- php: ^8
- foobar/foobar: *
Replaces
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
已安装(即项目所需的)
迁移
- 切换到 PHP 8
composer require foobar/foobar8
- (可选)移除
foobar/foobar7
的需求
这将满足所有依赖 foobar/foobar7
的其他库,而不仅仅是项目本身。
最终可能会得到类似这样的结果
{ "type": "project", "require": { "php": "^8", "foobar/foobar7": "^1", "foobar/foobar8": "^1" } }
当重新实现旧库或为旧架构提供回滚版本时很有用。
在其他场景中也可能有用,例如重新实现第三方库。
一个例子是维护缓慢的库,但发现了一个严重的缺陷。一个人可以自行获取并分发补丁,并仅替换某个版本。一旦第三方包更新,它将再次使用,而无需对消费项目进行更改。
请注意,替换不仅适用于 PHP 版本之间。可以替换任何包,甚至可以替换包的选定版本。