搜索
首页开发工具composerComposer的波浪线符号~和幂符号^到底有啥区别

下面由composer教程栏目给大家介绍Composer的波浪线符号~和幂符号^的区别,希望对需要的朋友有所帮助!

Composer的波浪线符号~和幂符号^到底有啥区别

曾经见过太多乱写版本号的(其实现在比以前好很多了),好多 1.9.0 的下个版本必然是 2.0.0, 2.9.0 下个版本必须 3.0.0……主要还是因为之前对版本号的命名就没有规范,大家都是看心情写。后来 semantic versioning 得到推广,版本号取名的情况得到改善,但依然有很多人不知道三段式版本号是什么含义(各种培训学校你们教一下这些规范会死么……)。

简单来说(我也就是搬运一下,上面提到的网站说的更清楚),三段式版本号各个段的含义是:

大版本.小版本.补丁版本

先说最明显的补丁版本。如果你的软件或者库,之前有一些 bug 被修复了,此时补丁版本需要 +1。

再来说小版本号。如果你增加了新的功能,比如 RPG 游戏增加了自动拾取东西,或者你的代码库里增加了一个新的方法,用户升级了你的代码库也不会导致兼容问题(BC),那么小版本号 +1。

最后,如果你的软件完全重构了,或者你的代码库完全重构以至于用户升级了新的库必然导致兼容问题,那么大版本号 +1。

当然,还会有同时修改了 bug 并增加了功能的情况,总之如果前一位需要 +1,无论何种情况后面的位数都必须清零。

对于面向终端用户的软件,其实也用不着太严格,因为终端用户也不太关心版本(除了大版本号……,所以出现了 chrome 风格的版本号,火狐也跟着带坏……),但对于库文件作者,还是遵守版本号的好,因为你定的版本号,提供了很重要的信息给库调用者,他们需要通过你的版本号来判断是否要避免兼容性问题。

举个比较经典的例子,虽然 Symfony 2/3/4 用起来也都差不多,但是因为这三个版本之间已经出现接口不一致的情况,所以大版本号必须得 +1。如果你的库文件有接口改变导致不兼容之前版本,哪怕只有一个,也应该将大版本号 +1。

而如果你用 Symfony 3.0.x 开发了一些项目,即使直接升级到 3.4.x,理论上来说也是完全没有问题的。

说完三段式版本号,再来说说一个比较困扰 PHPer 的问题,到底 composer.json 里指定版本号的 ^ 符号和 ~ 符号到底是什么意思?有什么区别?

写这篇博客之前其实我在百度上搜了一下,想知道相关的文章是否很多,这篇文章还值得写否。搜索结果显示也的确有人总结过。虽然大都只有一个例子:

~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0

^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0

根据以上搬运内容,我再补充一点点,~表示版本号只能改变最末尾那段(如果是 ~x.y 末尾就是 y,如果是 ~x.y.z 末尾就是 z),比如这种情况:

~1.2 等于 >=1.2.0; <2.0.0

而 ^ 符号,就跟上面说了那么多的 semantic versioning 有关系了,它表示尽量使用最新版本,但保证不产生兼容问题,换句话说也就是除了大版本号以外,小版本号和补丁版本号都可以变。

但目前看来有一个很重要的细节大家都没说到,在 semantic versioning 里,0 开头的版本号是比较特殊的,而因为 ^ 严格遵守 semantic versioning 规则,所以会出现以下情况(早先的 composer 版本并没有这样的处理,后来修正了):

^0.3.0 等于 >=0.3.0; <0.4.0

咦?难道不应该是 <1.0.0 吗?

究其原因,semantic versioning 的规定是,大版本号以 0 开头表示这是一个非稳定版本(unstable),如果处于非稳定状态,小版本号是允许不向下兼容的!所以如果你要指定 0 开头的库那一定要注意:

~0.1 这种写法是很危险的,因为 ~0.1 等于 >=0.1.0; <1.0.0,可能出现无法向下兼容的情况,比较保险的写法还是

^0.1(等于 >=0.1.0; <0.2.0)

以上是Composer的波浪线符号~和幂符号^到底有啥区别的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:chrisyue。如有侵权,请联系admin@php.cn删除
作曲家:简化PHP项目开发作曲家:简化PHP项目开发Apr 15, 2025 am 12:08 AM

Composer简化PHP项目开发的步骤包括:1)添加依赖,如在composer.json中添加"laravel/framework":"^8.0";2)自动加载,通过定义命名空间和类路径生成autoload.php文件;3)优化性能,使用composerdump-autoload-o和composerinstall--no-dev--optimize-autoloader命令。通过这些步骤,开发者可以提高效率并避免常见错误。

作曲家凭证:是什么使某人成为作曲家?作曲家凭证:是什么使某人成为作曲家?Apr 14, 2025 am 12:13 AM

成为作曲家的关键要素包括:1.掌握音乐理论,2.具备创造力和原创性,3.拥有技术技能,4.能够进行情感表达和故事讲述,5.理解文化和历史背景,6.积累实践和经验,这些要素共同构成了作曲家的身份和能力。

成为作曲家的途径:实用指南成为作曲家的途径:实用指南Apr 13, 2025 am 12:11 AM

成为作曲家的步骤包括:1.掌握音乐基本元素,如音符、节奏、和声、旋律;2.选择合适的技术工具,如AbletonLive;3.理解作曲的过程,包括灵感获取、构思、编写、修改和完善;4.从简单旋律创作开始,逐步尝试复杂技巧如和声进行;5.通过调试技巧解决常见问题,如音符选择和节奏安排;6.应用性能优化和最佳实践,如使用模板、版本控制和协作。

作曲家:构建强大PHP应用程序的关键作曲家:构建强大PHP应用程序的关键Apr 12, 2025 am 12:05 AM

Composer是构建健壮PHP应用的关键工具,因为它简化了依赖管理,提升了开发效率和代码质量。1)Composer通过composer.json文件定义项目依赖,并自动下载和管理这些依赖。2)它生成composer.lock文件确保依赖版本一致,并通过vendor/autoload.php实现自动加载。3)使用示例包括基本用法如添加日志库,以及高级用法如版本约束和环境变量管理。4)常见错误调试技巧包括处理依赖冲突和网络问题。5)性能优化建议包括使用composer.lock文件和优化自动加载。

作曲家专业知识:是什么使某人熟练作曲家专业知识:是什么使某人熟练Apr 11, 2025 pm 12:41 PM

要在使用Composer时变得熟练,需要掌握以下技能:1.熟练使用composer.json和composer.lock文件,2.理解Composer的工作原理,3.掌握Composer的命令行工具,4.了解基本和高级用法,5.熟悉常见错误与调试技巧,6.优化使用和遵循最佳实践。

作曲家在做什么?作曲家在做什么?Apr 08, 2025 am 12:19 AM

Composer是PHP的依赖管理工具,用于声明、下载和管理项目依赖。1)通过composer.json文件声明依赖,2)使用composerinstall命令安装依赖,3)解析依赖树并从Packagist下载,4)生成autoload.php文件简化自动加载,5)优化使用包括使用composerupdate--prefer-dist和调整autoload配置。

什么是应用作曲家?什么是应用作曲家?Apr 07, 2025 am 12:07 AM

AppComposer是一种用于构建和管理应用程序的工具。1)它通过拖拽和配置预定义组件简化应用开发,提高效率。2)开发者可以定义组件、组合界面、定义业务逻辑,并最终渲染应用。3)支持基本和高级用法,如任务管理和条件渲染,帮助构建灵活的应用。

作曲家是用什么?作曲家是用什么?Apr 06, 2025 am 12:02 AM

Composer是PHP的依赖管理工具。使用Composer的核心步骤包括:1)在composer.json中声明依赖,如"stripe/stripe-php":"^7.0";2)运行composerinstall下载并配置依赖;3)通过composer.lock和autoload.php管理版本和自动加载。Composer简化了依赖管理,提升了项目效率和可维护性。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。