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版本。可以替换任何包,甚至可以替换包的选定版本。