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